python和c#中的字节字符串相同,但md5哈希码是不同的

Mar*_* Ma 4 c# python encoding md5

我想从字符串生成哈希码,例如"咖啡",但我从python和c#得到的哈希码是不同的,python中的哈希码是我想要的

C#

String str = "??";
MD5 m = MD5.Create();
byte[] data = m.ComputeHash(Encoding.Default.GetBytes(str));
StringBuilder sbuilder = new StringBuilder();
for(int i=0;i<data.Length;i++){
  sbuilder.Append(data[i].ToString("x2"));
}
byte[] hex = Encoding.Default.GetBytes(str);
StringBuilder hex_builder = new StringBuilder();
foreach(byte a in hex){
  hex_builder.Append("{0:x2}",a);
}
//md5 hash code
Response.Write(sbuilder.ToString());
//binary string
Response.Write(hex_builder.ToString());
Run Code Online (Sandbox Code Playgroud)

蟒蛇

#coding:utf8
str = '??'
m = hashlib.md5()
m.update(str)
#md5 hashcode
print m.hexdigest()
#binary string
print ' '.join(["%02x"%ord(x) for x in str])
Run Code Online (Sandbox Code Playgroud)

二进制字符串是c#和python中的e5 92 96 e5 95 a1

md5哈希码:

(C#)a761914f9760af3c112e24f08dea1b16

(蟒)3b7daa58a1fecdf5ba4d94d539fbb4d5

Mih*_*rea 5

字符串编码可能不同; 因此,当您将字符串转换为byte []时,您可能会得到不同的值.尝试打印它们以查看它们是否相同.