在客户端上,我使用的是 Rusha,我已将其放入包装器中:
function cSHA1(m){
return (new Rusha).digest(m);
}
在服务器上,我使用的是 Node 的原生crypto
模块,
function sSHA1(m){
var h = crypto.createHash('sha1');
h.update(m);
return h.digest('hex');
}
让我们尝试一下:
cSHA1('foo')
"0beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a33"
sSHA1('foo')
'0beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a33'
cSHA1('bar')
"62cdb7020ff920e5aa642c3d4066950dd1f01f4d"
sSHA1('bar')
'62cdb7020ff920e5aa642c3d4066950dd1f01f4d'
到目前为止,一切都很好。
现在让我们给他们一个曲线球......
cSHA1(String.fromCharCode(10047))
"5bab61eb53176449e25c2c82f172b82cb13ffb9d"
sSHA1(String.fromCharCode(10047))
'5bab61eb53176449e25c2c82f172b82cb13ffb9d'
好的。
我有一个字符串,我如何得到它并不重要,无论如何,这是一个很长的故事,但是:
s.split('').map(function(c){
return c.charCodeAt();
})
在两个地方产生完全相同的结果:
[58, 34, 10047, 32, 79]
现在,让我们对其进行哈希处理:
s
":"✿ O"
cSHA1(s)
"a199372c8471f35d14955d6abfae4ab12cacf4fb"
s
':"? O'
sSHA1(s)
'fc67b1e4ceb3e57e5d9f601ef4ef10c347eb62e6'
这让我有点悲痛。搞什么鬼?