hash_hmac, HMAC 方法生成带有密钥的哈希值。支持多种 hash 算法,比如:hash1, hash256, hash512, crc32, md5 等
消息认证码(带密钥的Hash函数):密码学中,通信实体双方使用的一种验证机制,保证消息数据完整性的一种工具。构造方法由M.Bellare提出,安全性依赖于Hash函数,故也称带密钥的Hash函数。消息认证码是基于密钥和消息摘要所获得的一个值,可用于数据源发认证和完整性校验。
在发送数据之前,发送方首先使用通信双方协商好的散列函数计算其摘要值。在双方共享的会话密钥作用下,由摘要值获得消息验证码。之后,它和数据一起被发送。接收方收到报文后,首先利用会话密钥还原摘要值,同时利用散列函数在本地计算所收到数据的摘要值,并将这两个数据进行比对。若两者相等,则报文通过认证。
PHP
<?php echo hash_hmac('ripemd160', 'The quick brown fox jumped over the lazy dog.', 'secret');输出的结果:b8e7ae12510bdfb1812e463a7f086122cf37e4f7
GO
package main import ( "crypto/hmac" "fmt" "golang.org/x/crypto/ripemd160" ) func main() { hash := hmac.New(ripemd160.New, []byte("secret")) hash.Write([]byte("The quick brown fox jumped over the lazy dog.")) fmt.Printf("%x \n", hash.Sum(nil)) }输出的结果:b8e7ae12510bdfb1812e463a7f086122cf37e4f7