我一直在研究和试图解决这个问题,现在运气不太幸运,我试图用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;
}
如果没有运气,也许上述功能应该归咎于谁知道,我有点迷失,并且花费的时间比我应该多了很多,任何帮助都会很棒!