C#MD5哈希到Groovy MD5哈希

时间:2017-08-08 09:08:27

标签: c# grails encryption groovy

我需要在Groovy(Grails)中创建一个MD5哈希,它提供的结果与我在C#中的结果完全相同

C#代码使用MD5功能

tmpHash = new MD5CryptoServiceProvider().ComputeHash(tmpIn);

我可以使用groovy中的哪些功能?

我试过

licenseKeys = MessageDigest.getInstance("MD5").digest(tempAr).encodeHex()

但是这给了我几乎相同的结果,有时它在不同的位置有额外的零,其余的代码并不重要因为它只是将字符串转换为字节而且我知道MD5是旧的且不安全但仍然必须使用它

当输入 AAAAAAAA 时,c#输出为
87D746DB2DB357978BC97C92123622
并且在groovy中 87D746DB2D0B357978BC970C92123622

但输入为 AAAAA 的情况与之相同 C94EE213E7FA6887256D143E924227C4

在groovy中获取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);

1 个答案:

答案 0 :(得分:0)

问题是C#版本没有显示“0”字符。结果应该是16个字节,显示为十六进制的32个字符,C#结果很短。

87D746DB2D B357978BC97 C92123622 C#
87D746DB2D0B357978BC970C92123622 groovy

显示代码出错。

  

注意:

C94EE213E7FA6887256D143E924227C4
是相同的,因为C#或groovy显示中没有“0”字符。