不幸的是,我一直在研究并尝试在这方面工作几天,但运气不佳,我正在尝试使用 Java 复制一个 C# 项目,因此获得完全相同的结果很重要,但到目前为止我失败了。
在 C# 中:
byte[] hash = new MD5CryptoServiceProvider().ComputeHash(Encoding.UTF8.GetBytes("sometext"));
我设法得到
Encoding.UTF8.GetBytes("sometext")
要按预期输出,尝试分解步骤,但从那里没有运气,它需要以字节为单位返回,在一个 16 的数组中。C# 将如何做到这一点,所以我可以按预期进一步操作它,这是项目中只有打嗝,因为当我将字节强制放入数组时,其他所有内容都会按应有的方式计算。
我试过使用 CryptoJS
CryptoJS.MD5(CryptoJS.enc.Utf16.parse(str));
并使用转换为字节数组
function convertWordArrayToUint8Array(wordArray) {
var len = wordArray.words.length,
u8_array = new Uint8Array(len << 2),
offset = 0, word, i
;
for (i = 0; i < len; i++) {
var word = wordArray.words[i];
u8_array[offset++] = word >> 24;
u8_array[offset++] = (word >> 16) & 0xff;
u8_array[offset++] = (word >> 8) & 0xff;
u8_array[offset++] = word & 0xff;
}
return u8_array;
}
没有运气,也许上面的功能应该归咎于谁知道,我有点迷茫,花了比我应该花更多的时间,任何帮助都会很棒!