gev*_*org 13 javascript hash backwards-compatibility node.js node-crypto
问题
我有node.js模块crypto.createHash用于生成md5哈希.
最近我注意到crypto模块生成的哈希在新版本中有所不同:
码
require('crypto').createHash('md5').update('¥').digest('hex')
Run Code Online (Sandbox Code Playgroud)
Node.js v0.10.0
输出: ab3af8566ddd20d7efc9b314abe90755
Node.js v6.1.0
输出: 07625e142e4ac5961de57472657a88c1
题
我想知道新版本的原因是什么,我该如何解决?
更新
关于GitHub的类似问题:
rob*_*lep 26
Node v6 +中的一些输入计算与先前Node版本不同的哈希.
基本上,当您将字符串传递给.update()v6之前的版本时,默认编码是binary,但对于更改为的Node v6 utf-8.
例如,请使用以下代码:
require('crypto').createHash('md5').update('¥').digest('hex')
Run Code Online (Sandbox Code Playgroud)
这ab3af8566ddd20d7efc9b314abe90755在Node pre-6和07625e142e4ac5961de57472657a88c1Node 6上输出.
如果您希望节点6输出与6之前版本相同的内容,则必须告诉.update()您使用binary编码:
require('crypto').createHash('md5').update('¥', 'binary').digest('hex')
Run Code Online (Sandbox Code Playgroud)
或者反过来(使节点6之前的输出与6相同):
require('crypto').createHash('md5').update('¥', 'utf-8').digest('hex')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5257 次 |
| 最近记录: |