我知道很少关于加密和哈希。
我需要对一个加密密钥进行哈希。Java中的示例如下:
String encryptionKey = "test";
MessageDigest messageDigest = MessageDigest.getInstance("MD5");
messageDigest.update(encryptionKey.getBytes("UTF-8"), 0, encryptionKey.length());
byte[] encryptionKeyBytes = messageDigest.digest();
请纠正我如果我错了,上述代码使用MD5算法对字符串进行哈希。
当我在C#中使用相同的字符串进行哈希时,我想得到相同的结果。
我的当前C#代码如下...
string encryptionKey = "test";
var md5 = MD5.Create();
var keyBytes = Encoding.UTF8.GetBytes(encryptionKey);
byte[] encryptionKeyBytes = md5.ComputeHash(keyBytes);
但是最终的字节结果不匹配。
Java得到的...
[0] 9
[1] -113
[2] 107
[3] -51
[4] 70
[5] 33
[6] -45
[7] 115
[8] -54
[9] -34
[10] 78
[11] -125
[12] 38
[13] 39
[14] -76
[15] -10
C# 获取...
[0] 9 byte
[1] 143 byte
[2] 107 byte
[3] 205 byte
[4] 70 byte
[5] 33 byte
[6] 211 byte
[7] 115 byte
[8] 202 byte
[9] 222 byte
[10] 78 byte
[11] 131 byte
[12] 38 byte
[13] 39 byte
[14] 180 byte
[15] 246 byte
我需要我的C#代码得到与Java代码相同的结果(不是反过来),有什么建议吗?
谢谢。
encryptionKey.getBytes("UTF-8"), 0, encryptionKey.length()
。我留给您自己去找出错误是什么。最后,直接比较字符串表示(toString)总是一个不好的主意。 - bestsss