Encryption

編碼 unsigned int 以防止猜測下一個 ID

  • April 2, 2015

假設我們以順序方式從 N 位空間(比如 32 位)為記錄分配一個無符號整數 ID。有沒有一種方法可以在向公眾展示之前對這個 ID 進行編碼,這樣人們就無法猜出序列中的下一個 ID。它應該是雙向的,這樣給定編碼的 int,我們可以確定原始 ID 和 1:1,這樣每個 ID 都有一個對應的編碼 int(理想情況下具有相同的位長)。

這不需要承受任何類型的蠻力攻擊,但如果兩個編碼整數表示靠近或相距很遠的 ID,則對觀眾來說應該是不明顯的。

有任何想法嗎?實現越簡單越好。

幾種方法:

這種方法的缺點是複雜性和性能。

  • 具有小(通常為 32 位)塊的分組密碼。

    • Skip32 源自 Skipjack
    • ipcrypt(最近,目前沒有安全分析)這種方法的缺點是這些密碼不是很流行,可能還沒有看到太多的分析。
  • 洗牌算法,如交換或不交換的 thorp shuffle。

swap-or-not似乎非常適合您的案例。

引用自:https://crypto.stackexchange.com/questions/24555