JS中的哈希值= PHP中的哈希值

时间:2011-08-09 04:36:55

标签: php javascript hash

我需要使用JS和PHP制作哈希,但我需要它们才能成为相同的哈希。 我只是想知道最好的想法是什么。它需要是安全的,但它不会散列敏感数据,因此不需要大量的安全性。

任何人都可以给我一些例子

谢谢。

3 个答案:

答案 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

感谢https://stackoverflow.com/a/55926440/470749