将MD5.ComputeHash(Encoding.Unicode.GetBytes(value))转换为javascript

时间:2013-11-28 09:39:55

标签: javascript vb.net unicode md5 cryptojs

我需要将以下行从vb.net翻译为javascript

MD5.ComputeHash(Encoding.Unicode.GetBytes(value))

我试图使用CryptoJS但是我得到了不同的结果,因为我需要将一个字符串传递给它但是一个字节数组进入VB.net中的MD5函数

有人可以帮忙吗?

谢谢

2 个答案:

答案 0 :(得分:0)

Encoding.Unicode是Windows用于UTF-16LE编码的(误导性)名称。

然而,当给定一个字符串时,CryptoJS函数使用(更常见的)UTF-8而不是UTF-16LE将其编码为字节:

  

哈希算法接受CryptoJS.lib.WordArray的字符串或实例。 WordArray对象表示32位字的数组。传递字符串时,它会自动转换为编码为UTF-8的WordArray。

因此,在将其传递给MD5之前,您需要自己创建一个WordArray。有了足够新的CryptoJS,有一个功能可以帮到你:

CryptoJS.MD5(CryptoJS.enc.Utf16LE.parse(str))

答案 1 :(得分:0)

在C#中:

var data = md5.ComputeHash(Encoding.Default.GetBytes(password));
StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i < data.Length; i++) {
    stringBuilder.Append(data[i].ToString("x2"));
}
return stringBuilder.ToString();

在Node.js中

const crypto = require('crypto');

crypto.createHash('md5').update(value).digest('hex');