今天做项目时,遇到一个问题,需要将一段哈希值按照某种规则进行加密。源码是用Node
写的,需要翻译成PHP
版本的。
PHP中使用 Hmac 方法生成带有密钥的哈希值
在Node.js 中,这是一段用于生成“加盐”的哈希值。
1 | var crypto = require('crypto'); |
如果要翻译成PHP版本,其实非常简单,直接使用PHP 的 hash_hmac
函数就可以了。
1 | <?php |
将密钥设置成二进制
如果需要加密的部分,并不是普通的字符串,而是二进制字符串,那么需要使用pack
函数。
1 | var_dump(hash_hmac("sha1", "office:fred", "AA381AC5E4298C23B3B3333333333333333333")); |
先将十六进制字符串转换为二进制数据,然后再将其传递给hash_hmac
:
1 | var_dump(hash_hmac("sha1", "office:fred", pack("H*", "AA381AC5E4298C23B3B3333333333333333333"))); |
Node中使用crypto进行md5 加密
在PHP 中,如果需要获取某个字符串的md5 加密之后的哈希值,非常简单,直接使用md5
函数即可。
但是在node.js
中,并没有为我们直接提供这样的函数,所以需要手动调用crypto
模块去转换:
1 | var pwd = "122410"; |