c# - 字节串在python和c#中是相同的,但是md5 hashcode是不同的

标签 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());

python

#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])

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

md5哈希码:

(c#)a761914f9760af3c112e24f08dea1b16

( python )3b7daa58a1fecdf5ba4d94d539fbb4d5

最佳答案

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

关于c# - 字节串在python和c#中是相同的,但是md5 hashcode是不同的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6027332/

相关文章:

c# - 复杂类型不显示存储过程的结果

python - 将 SQLAlchemy 关系与笨拙的连接相关联

python - 如何使用 Rdkit 使粘合线更粗

python - 使用 scipy.sparse.diags 的 Scipy 三对角矩阵

ruby-on-rails - 如果在 Ruby 中包含 "+"到 %2B,如何对电子邮件进行编码

Python - 将表情符号字符写入日志文件

c# - asp.net core 1.0 web api使用camelcase

javascript - 一个 Rx 可观察对象将充当 ReplaySubject 但仅适用于第一个订阅者?

c# - TextBox 不支持系统十进制(点或逗号)

encoding - 使用 FFMPEG 和可变每个图像时间戳从 PNG 创建视频