测试淘宝api,python生成的md5码是正确的,c#不对
c#
![](zzz/editor/img/code.gif)
String str = "咖啡";
MD5 m = MD5.Create();
byte[] data = (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码
Response.Write(sbuilder.ToString());
//二进制码
Response.Write(hex_builder.ToString());
MD5 m = MD5.Create();
byte[] data = (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码
Response.Write(sbuilder.ToString());
//二进制码
Response.Write(hex_builder.ToString());
python
![](zzz/editor/img/code.gif)
str = '咖啡'
m = hashlib.md5()
m.update(str)
#md5码
print m.hexdigest()
#二进制码
print ' '.join(["%02x"%ord(x) for x in str])
m = hashlib.md5()
m.update(str)
#md5码
print m.hexdigest()
#二进制码
print ' '.join(["%02x"%ord(x) for x in str])
二进制码都是e5 92 96 e5 95 a1
md5码
(c#)a761914f9760af3c112e24f08dea1b16
(python)3b7daa58a1fecdf5ba4d94d539fbb4d5
据说.net默认编码是utf16,但我在python用utf16解码时,二进制码是92e5 e596 a195(为什么两个字节一空?是两个字节作为一个byte?)