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

3

我正在运行代码

    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。 我可以通过编辑器连接,但设备无法连接。
测试设备:2个 iPhone6。 两者都可重现。
更新:这似乎是一个 IL2CPP 问题。
如果不使用它进行编译,则会获得 0CE1044C1D0CB90036811DD0C3B659A09FE5C2C3。但是,如果启用 IL2CPP 进行编译,并在 x64 兼容设备上运行它,则会获得 409E73E8A9971EB82435FE38556D37D2C888E22C。
1个回答

2

问题已解决。

在Unity 4.6.3版本中,Sha1生成的结果错误。

在Unity 4.6.2版本中,在设备和编辑器上都可以正常工作。

更新:已在4.6.3p1版本中修复。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接