我需要使用JS和PHP进行哈希处理,但是我需要它们两者都成为同一个哈希值。我只是想知道最好的主意是什么。它必须是安全的,但不能散列敏感数据,因此不需要大量的安全性。
谁能给我一些例子
谢谢。
您可以使用MD5:给定相同的字符串输入,php和JS解决方案应该是相同的。 http://pajhome.org.uk/crypt/md5/列出了JavaScript中的哈希实现,而md5的PHP实现已记录在文档here中,并且都提供了示例。
您需要小心,对两个函数使用完全相同的输入,但否则应该不会太痛苦。
[别忘了javascript本质上是不安全的,因为它是客户端,但是如果您要散列代码以与ajax进行通信,或者您不想将钱花在ssl证书上,那么这可能是要走的路。
最常见的哈希算法是md5和sha256。现在,由于这些是算法,因此无需将其编码为语言(就像在php中一样),而是可以使用该语言编写。一些非常聪明的人已经为您完成了艰苦的工作,现在您只需要获取他们的资料即可。
MD5:http://www.webtoolkit.info/javascript-md5.htmlSHA256:http://www.bichlmeier.info/sha256.html
在PHP中,使用:
$hash = hash('sha256', "here_is_my_input_string");
然后可以在JavaScript中使用Web Crypto API:
function hashAsync(algo, str) {
return crypto.subtle.digest(algo, new TextEncoder("utf-8").encode(str)).then(buf => {
return Array.prototype.map.call(new Uint8Array(buf), x=>(('00'+x.toString(16)).slice(-2))).join('');
});
}
hashAsync("SHA-256", "here_is_my_input_string").then(outputHash => console.log(outputHash));
// prints: 4bb047046382f9c2aeb32ae6d2e43439f05d11bd74658f1d160755ff48114364 which also matches 3rd party site: https://emn178.github.io/online-tools/sha256.html