Encryption
編碼 unsigned int 以防止猜測下一個 ID
假設我們以順序方式從 N 位空間(比如 32 位)為記錄分配一個無符號整數 ID。有沒有一種方法可以在向公眾展示之前對這個 ID 進行編碼,這樣人們就無法猜出序列中的下一個 ID。它應該是雙向的,這樣給定編碼的 int,我們可以確定原始 ID 和 1:1,這樣每個 ID 都有一個對應的編碼 int(理想情況下具有相同的位長)。
這不需要承受任何類型的蠻力攻擊,但如果兩個編碼整數表示靠近或相距很遠的 ID,則對觀眾來說應該是不明顯的。
有任何想法嗎?實現越簡單越好。
幾種方法:
- 通用格式保留加密。例如 FFX 模式下的 AES。
這種方法的缺點是複雜性和性能。
具有小(通常為 32 位)塊的分組密碼。
- Skip32 源自 Skipjack
- ipcrypt(最近,目前沒有安全分析)這種方法的缺點是這些密碼不是很流行,可能還沒有看到太多的分析。
洗牌算法,如交換或不交換的 thorp shuffle。
swap-or-not似乎非常適合您的案例。