我crypto
在服务器端使用 NodeJS 的捆绑模块进行 SHA256 散列。在客户端,我使用了一个名为Crypto-JS
.
我正在将 SHA256 哈希用于使用经典的基于 nonce 的身份验证的登录系统。但是,即使哈希消息相同(我已经检查过),我的服务器端和客户端哈希摘要也不匹配。甚至哈希摘要的长度也不同。
这是我的客户端实现的片段:
var password_hash = CryptoJS.SHA256( token.nonce /*this is the server's nonce*/ + cnonce + password ).toString(CryptoJS.enc.Base64);
这是我的服务器端实现的片段:
var sha256 = CRYPTO.createHash("sha256");
sha256.update(snonce+cnonce+password, "utf-8");
var hash = sha256.digest("base64");
这是一些示例数据:
client-digest: d30ab96e65d09543d7b97d7cad6b6cf65f852f5dd62c256595a7540c3597eec4
server-digest: vZaCi0mCDufqFUwVO40CtKIW7GS4h+XUhTUWxVhu0HQ=
client-message: O1xxQAi2Y7RVHCgXoX8+AmWlftjSfsrA/yFxMaGCi38ZPWbUZBhkVDc5eadCHszzbcOdgdEZ6be+AZBsWst+Zw==b3f23812448e7e8876e35a291d633861713321fe15b18c71f0d54abb899005c9princeofnigeria
server-message: O1xxQAi2Y7RVHCgXoX8+AmWlftjSfsrA/yFxMaGCi38ZPWbUZBhkVDc5eadCHszzbcOdgdEZ6be+AZBsWst+Zw==b3f23812448e7e8876e35a291d633861713321fe15b18c71f0d54abb899005c9princeofnigeria
有谁知道为什么哈希值不同?我认为如果它是相同的协议/算法,它总是会产生相同的哈希值。
编辑:哇。我使用了这个在线哈希工具,它为同一条消息生成了另一个摘要:
4509a6d5028b217585adf41e7d49f0e7c1629c59c29ce98ef7fbb96c6f27502c
编辑编辑:再想一想,在线哈希工具不同的原因可能是因为它使用了hex
编码,而我使用了base64