检查JSON文件的完整性

时间:2015-06-03 03:53:02

标签: c# json caching hash unity3d

  • 我正在开发基于服务器的游戏,并且我通过JSON将游戏数据从服务器发送到客户端。
  • 为了最大限度地减少带宽使用,我将游戏数据JSON缓存在客户端计算机上,这样他们就不需要每次都从服务器下载JSON。
  • 我需要知道客户端上缓存的JSON是否与服务器上的JSON相同(当我们在服务器上进行更改或者用户访问并调整客户端缓存时,它可能会变得不同)

所以基本上我需要某种散列技术来获取JSON字符串唯一的密钥,我可以检查它是否在客户端上缓存的JSON与服务器上存储的JSON相同。服务器将首先将该哈希发送到客户端,并且只有当它与客户端缓存生成的哈希不同时,客户端才会再次从服务器请求整个JSON。

  • 我不关心数据丢失,因为哈希永远不会再转换回字符串。
  • 由于JSON中的密钥顺序不同,我不关心Hash差异,因为我确保当我从服务器获取JSON时它们始终处于正确的顺序。
  • 哈希不应该是特定于环境的。无论环境如何,32或64位和字节序都使用相同的算法生成相同的哈希值。

2 个答案:

答案 0 :(得分:1)

如果您正在寻找简单的哈希,为什么不使用MD5哈希呢? https://msdn.microsoft.com/en-us/library/system.security.cryptography.md5%28v=vs.110%29.aspx基本哈希,易于实现和使用。

如果您希望使用JS在客户端上执行MD5哈希,您可能需要查看https://github.com/blueimp/JavaScript-MD5(未经我测试,但我听说过好的事情:)

答案 1 :(得分:0)

  1. 正如Brad所提到的,.NET中任何内置的Hashing技术都应该为您完成工作。
  2. 另一种选择是使用基于UTC的时间戳。 (LastModified)服务器可以发送此值,如果客户端具有相同的值,则最好使用。无论谁更新文件,都可以更新时间戳。