先介绍一些常用概念:
MD5(Message-Digest Algorithm 5),消息摘要算法第 5 版,是一种哈希(散列)算法。简单一句话:输入任意长度的内容,算出一个固定 128 位的指纹(32 位十六进制字符串)。有碰撞漏洞,已经不再安全。
SHA-1(Secure Hash Algorithm 1),全哈希算法第 1 版,同样是哈希(摘要)算法,和 MD5 是一类东西,生成40位十六进制字符串。比md5稍微安全一点,但是也不再推荐了。
SHA256,属于SHA-2 家族,也是哈希算法,生成64位十六进制字符串,安全性很高,目前主流,用在签名校验,https?。
HMAC,全称Hash-Based Message Authentication Code,基于哈希的消息认证码,简单理解:带密钥的哈希,不是新哈希算法,是一种包装方案,可以套 MD5、SHA1、SHA256 这些哈希。
php里可以用的函数:
md5($data) 直接生成MD5,其实也可以用hash('md5', $data)
sha1($data) 直接生成sha-1,其实也可以用hash('sha1', $data)
hash('sha256', $data) 生成sha256
这些加密函数只是生成数字指纹,谁生成的结果都一样,没办法判断谁签发的,所以需要用到hmac。