Sha1 哈希在 Unity3d 编辑器和 iPhone6 设备上不同

Sha1 hash is different in the Unity3d editor and on the iPhone6 device

我正在运行编写代码

    var signatureBase = "CAAVRwZBSsH38BAJF7Ct1wUF3GRctdE9a0mHpmMZCa9UtlQMZBRaVC9dupKBuqlPp2BL7x12muSo0p9YZCnwajGBR7UJsNhIr9JWtnWJCaqf3k8azY50Ka87umbvd6mQKo19en0t5wCKRyPITCJtm4WP74MYa8XVNPyL1YABTwZB6xWsh37ZA0ISvDvoMVRfGLzkkWulZA8qqZC71b4kRWkBB";
    byte[] signatureBytes = new SHA1Managed ().ComputeHash (System.Text.Encoding.UTF8.GetBytes (signatureBase));            
    SoapHexBinary shb = new SoapHexBinary( signatureBytes );        
    Debug.LogError (shb.ToString());

并得到不同的结果:

device: 409E73E8A9971EB82435FE38556D37D2C888E22C

editor: 0CE1044C1D0CB90036811DD0C3B659A09FE5C2C3

有趣的是几天前就出现了差异。 在此之前,来自编辑器的散列与设备上的相同:在当前情况下,服务器期望 0CE1044C1D0CB90036811DD0C3B659A09FE5C2C3。我可以通过编辑器连接,但是设备连接失败

测试设备:2x iPhone6。两者均可重现。

更新:这似乎是一个 IL2CPP 问题。

如果不使用它进行编译,我将得到 0CE1044C1D0CB90036811DD0C3B659A09FE5C2C3。 但是如果在启用 IL2CPP 的情况下编译并在 x64 兼容设备上 运行 它,我得到 409E73E8A9971EB82435FE38556D37D2C888E22C。

案件破案。

在 Unity 4.6.3 上,Sha1 生成错误结果。

在 Unity 4.6.2 上,它在设备和编辑器上都能正常工作。

UPD:已在 4.6.3p1 中修复。