我们使用Crypto JS SHA3将我们的用户名和密码一起哈希。
该函数从两个html输入字段获取用户名和密码的输入,将它们与salt连接,并对它们进行哈希处理。第一个散列成功运行,但是再次散列相同的输出会产生不同的结果。
这是相关代码:
$prehash = $salt + $user + $pass;
$prehash = CryptoJS.enc.Utf8.parse($prehash);
var sha3 = CryptoJS.algo.SHA3.create();
sha3.update($prehash);
var password = sha3.finalize().toString(CryptoJS.enc.Hex);
sha3.reset();
var sha3 = CryptoJS.algo.SHA3.create();
sha3.update($prehash);
var password2 = sha3.finalize().toString(CryptoJS.enc.Hex);
sha3.reset();
console.log('PREHASH: ' + $prehash);
console.log('HASHWORD: ' + password);
console.log('HASHWORD2: ' + password2);
控制台日志输出以下内容:
PREHASH: 4d616e636865737465722c20436f6e6e65637469637574204d6f62696c65205573657273546f776e20436c65726b68617665206272616e6368657320616476616e63652042656c6769756d
HASHWORD: db90cbb6766f3ca0dc8af39455cd6e224263db31caed3f73f9ad923a02c34211c85cc17a8e3d0166cd82c10d12a137332891c0c201174e16d19a93b6b4d430cf
HASHWORD2:
9ed635963fa0079a0520d8afa59d1e19be601d7bf77f623702304240993ce9bdd2f3023ca6bbd44f2ab30ceb2de1c8f0d3fe3d63292c5a23c44ddd1d485baa71
编辑:我们已经测试了其他两个设备,并发现我们在其他两个设备上获得了正确的输出。这种行为只能在我的同事手机上观察到。现在我们更加困惑。有人知道为什么不同的设备会产生不同的输出吗?
编辑:这是一个证明问题的jsfiddle。它应该是真实的&真正。在我们的Android 4.2.2设备上,它读取false& false http://jsfiddle.net/odL57wfo/2/
答案 0 :(得分:0)
我们无法找到解决此问题的方法,因此我们在crypto-js项目中打开了一个错误,同时我们使用了不同的散列算法