使用Javascript来确认在PHP中做的哈希?

我需要一种在PHP(crypt()或md5())中创build可以被Javascript复制的散列的方法。

IE浏览器。

  1. 使用PHP创build一个“hello world”的散列(使用预先安排的私有盐)
  2. 把哈希和纯文本放在两个隐藏的表单域中
  3. 表单通过ajax提交给Node.js服务器
  4. 使用Javascript重复纯文本(再次与私人盐)散列,并检查哈希匹配

在JS中是否有一个本地函数,或者我可以使用一个通用的(可靠的)第三方脚本来实现这个function? 我宁愿不从节点服务器调用PHP。

在浏览器中,可以使用CryptoJS创build一个HMAC(基于散列的消息authentication码)。 挑战将是分发你的“预先安排的私人盐”。

以下是CryptoJS文档中的示例代码:

<script src="http://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/hmac-md5.js"></script> <script src="http://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/hmac-sha1.js"></script> <script src="http://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/hmac-sha256.js"></script> <script src="http://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/hmac-sha512.js"></script> <script> var hash = CryptoJS.HmacMD5("Message", "Secret Passphrase"); var hash = CryptoJS.HmacSHA1("Message", "Secret Passphrase"); var hash = CryptoJS.HmacSHA256("Message", "Secret Passphrase"); var hash = CryptoJS.HmacSHA512("Message", "Secret Passphrase"); </script> 

在Node.js上,使用Crypto模块:

 require("crypto") .createHmac("sha256", "Secret Passphrase") .update("Message") .digest("base64");