1

我需要将下面的行从 vb.net 翻译成 javascript

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

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

任何人都可以帮忙吗?

谢谢

4

2 回答 2

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))
于 2013-11-30T18:01:04.750 回答
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');
于 2020-02-06T14:15:12.740 回答