我需要使用JS和PHP制作哈希,但我需要它们才能成为相同的哈希。 我只是想知道最好的想法是什么。它需要是安全的,但它不会散列敏感数据,因此不需要大量的安全性。
任何人都可以给我一些例子
谢谢。
答案 0 :(得分:3)
你可以使用MD5:在给定相同的字符串输入的情况下,php和JS解决方案应该是相同的。 http://pajhome.org.uk/crypt/md5/在javascript中有一个哈希实现列表,md5的PHP实现记录在here,并且都有示例。
你需要注意两个函数使用完全相同的输入,但不应该太痛苦。
答案 1 :(得分:1)
嗯,不要忘记javascript本质上是不安全的,因为它是客户端,但如果你是用ajax进行通信,或者你不想把钱花在ssl证书上,那么这可能是要走的路。
最常见的散列算法是md5和sha256。现在,因为这些是算法,所以不需要将它们编码成语言(因为它们在php中),但可以使用该语言编写。一些非常聪明的人已经为你完成了艰苦的工作,现在你只需要获得他们的来源。
MD5:http://www.webtoolkit.info/javascript-md5.html
SHA256:http://www.bichlmeier.info/sha256.html
答案 2 :(得分:0)
在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