C#MD5哈希Groovy的MD5哈希
问题描述:
我需要在Groovy(Grails的)一个MD5哈希,让完全相同的结果作为一个我在C#C#MD5哈希Groovy的MD5哈希
的C#代码使用MD5函数
tmpHash = new MD5CryptoServiceProvider().ComputeHash(tmpIn);
什么功能是有在Groovy,我可以使用?
我试图
licenseKeys = MessageDigest.getInstance("MD5").digest(tempAr).encodeHex()
但是,这给了我几乎相同的结果,有些时候它在不同的位置多余的零,该代码的其余部分并不像它只是使字符串转换成字节和我重要知道MD5是旧的,不安全的,但仍然有使用它
当输入AAAAAAAA C#的输出为
87D746DB2DB357978BC97C92123622
和常规
87D746DB2D0B357978BC970C92123622
但随着输入作为AAAAA其同
C94EE213E7FA6887256D143E924227C4
获得在常规的tempAr我做这个
byte[] array = temp.getBytes("UTF-8")
byte[] tempAr = new byte[array.size() * 2]
// to add 0 after each byte
for (int i = 0; i < tempAr.size(); i++){
if (!(i%2)){
tempAr[i] = array[((int)(i * 0.5))]
}
else{
tempAr[i] = 0
}
}
我这是因为这个原因旧的C#代码做它好,我知道它的怪异......
C#代码以获得字节是
tmpIn = UnicodeEncoding.Unicode.GetBytes(txtFirstname.Text + txtLastname.Text);
答
的问题是C#版本不显示“0”字。结果应该是16个字节,显示为十六进制的32个字符,C#结果很短。
87D746DB2D B357978BC97 C92123622 C# 87D746DB2D0B357978BC970C92123622 groovy
显示代码有错误。
注:
C94EE213E7FA6887256D143E924227C4是相同的,因为在C#或常规显示中没有“0”字符。
额外的零在哪里?你有一个例子吗?你期望什么?你如何定义“有时”? –
一般来说,第一个错误是:“make a ** MD5 ** hash”,而对于某些用法,MD5通常是可以接受的,现在是时候移动到至少SHA-256。 – zaph
当我使用标准功能并得到奇怪和/或不正确的结果时,我的第一个想法是“我做错了”™。请提供[MCVE],其中包含输入和输出数据。 – zaph