我需要将以下行从vb.net翻译为javascript
MD5.ComputeHash(Encoding.Unicode.GetBytes(value))
我试图使用CryptoJS但是我得到了不同的结果,因为我需要将一个字符串传递给它但是一个字节数组进入VB.net中的MD5函数
有人可以帮忙吗?
谢谢
答案 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');