python - 如何使用 python 和 unity3d C# 比较图像的哈希值?
问题描述
我有一个 unity3d 应用程序,它请求一个图像名称的 json 字符串,包括它在我的 django 网络服务器中的哈希值。然后我的统一应用程序将检查我现有的图像哈希是否与请求的 json 相同。我的问题是统一哈希结果与我的 python 哈希结果值不同。我还尝试在两者上散列字符串,它返回相同的散列值。
Python哈希:
>>> image_file = open('C:/image.png').read()
>>> hashlib.md5(image_file).hexdigest()
'658e8dc0bf8b9a09b36994abf9242099'
Unity3d 哈希:
public static string ComputeHash()
{
// Form hash
System.Security.Cryptography.MD5 h =System.Security.Cryptography.MD5.Create();
var myImage = File.OpenRead(PathByPlatform("image.png"));
var data = h.ComputeHash(myImage );
System.Text.StringBuilder sb = new System.Text.StringBuilder();
for (int i = 0; i < data.Length; ++i)
{
sb.Append(data[i].ToString("x2"));
}
return sb.ToString();
//This fucntion returns
//fac7f19792a696d81be77aca7dd499d0
}
解决方案
您是否尝试open('C:/image.png', "rb").read()
过以二进制模式读取文件?
读取不带“b”的文件会将 Windows 上的行结束字符从 CR/LF 更改为 LF,这对哈希有影响。(至少对于python2)
推荐阅读
- reactjs - 从子组件设置状态并使用 Context API 将其传递给父组件
- ios - 当我开始使用 WKWebViewOnly 时,Auth0 登录停止工作
- angular - 如果我使用 compareWith,如何从 ngSelected 获取选定值?
- javascript - 提取特定 ID 的 Google 脚本
- r - Crowly 的第 2.8.6 章 R 书
- azure - 通过 cmdlet 或 rest api 在 Azure 合作伙伴中心注册 Azure 应用
- kotlin - Kotlin/Native compileKotlinIosX64 任务在构建 iOS 应用程序时失败
- visual-studio-code - 强制 VS Code 安装扩展而不进行兼容性检查
- sql - 聚集索引中的最佳列顺序
- android-studio - 如何在 Android Studio 上修复应用程序模拟器