簡體   English   中英

檢查JSON文件完整性

[英]Checking JSON file integrity

  • 我正在開發基於服務器的游戲,並且正在通過JSON將游戲數據從服務器發送到客戶端。
  • 為了最大程度地減少帶寬使用,我將游戲數據JSON緩存在客戶端計算機上,這樣他們就不必每次都從服務器下載JSON。
  • 我需要知道客戶端上緩存的JSON是否與服務器上的JSON相同(當我們在服務器上進行更改或用戶訪問並調整了客戶端上的緩存時,它可能會變得不同)。

因此,基本上,我需要某種哈希技術來獲取JSON字符串唯一的密鑰,我可以檢查該密鑰以查看客戶端上緩存的JSON是否與服務器上存儲的JSON相同。 服務器將首先將該哈希發送給客戶端,並且僅當該哈希與從客戶端緩存生成的哈希不同時,客戶端才會再次從服務器請求整個JSON。

  • 我不在乎數據丟失,因為哈希永遠不會再轉換回字符串。
  • 我不關心由於JSON中的鍵順序不同而導致的哈希差異,因為我確保從服務器獲取JSON時它們始終處於正確的順序。
  • 哈希值不應特定於環境。 無論環境,32位或64位和字節序如何,相同的算法都應生成相同的哈希。

如果您要查找簡單的哈希,為什么不只使用MD5哈希呢? https://msdn.microsoft.com/zh-cn/library/system.security.cryptography.md5%28v=vs.110%29.aspx易於實現和使用的基本哈希。

如果您希望使用JS在客戶端上進行MD5哈希處理,則可能需要查看https://github.com/blueimp/JavaScript-MD5 (未經我測試,但我聽過好消息:)

  1. 正如Brad所述,.NET中的任何內置哈希技術都可以為您完成這項工作。
  2. 另一個選擇是使用基於UTC的時間戳。 (LastModified)服務器可以發送該值,並且如果客戶端具有相同的值,則很好用。 誰更新文件,誰都可以更新時間戳。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM