如何生成可以追溯到唯一源編號的唯一(隨機)編號?
我需要生成可以追溯到唯一源編號的唯一(隨機)編號。
例如:
源號 A 可以生成數字 A1, A1, A3 …. Am
源號 B 可以生成數字 B1, B2, B3 …. Bm
…
源號 N 可以生成數字 N1, N2, N3 ….牛米
所有源數 A、B、..N 和生成的數 Ai、Bi、Ni 應該是唯一且互斥的。
現在對於任何生成的數字 Ai,我應該能夠明確地計算出源數字 A(Bi、Ci、… Ni 也是如此)。
有人可以為此算法提供幫助嗎?
案例:使用者鍵入由該算法生成的數字程式碼。伺服器應該能夠僅從程式碼中辨識此使用者。對於其他人,應該無法辨識使用者,也無法為該使用者生成後續程式碼。
號碼 $ n $ (編碼源)和 $ m $ (給定源的編碼索引)可以組合成一個位串;例如與 $ 0\le m<2^u $ 和 $ 0\le n<2^v $ , 作為一個位串 $ \lceil u+v\rceil $ 位。然後,可以通過使用具有塊寬度的安全塊密碼進行加密來將該單個位串轉換為唯一的類似隨機數 $ w\ge u+v $ 位和一個固定的密鑰(輸入前綴 $ w-\lceil u+v\rceil $ 零位以達到寬度 $ w $ 分組密碼)。類隨機數將是與密文位串對應的整數,因此在範圍內 $ [0\dots2^w-1] $ .
不同的對 $ (n,m) $ 輸入總是導致不同的輸出,因為分組密碼是其分組空間的排列。解密(需要密鑰)允許從類似隨機的數字中恢復原始位串,並從中恢復 $ n $ 和 $ m $ . 如果有人檢查破譯的內容可能是從一個有效的 $ (n,m) $ (包含 $ w-\lceil u+v\rceil $ 零前導位),隨機位串可接受的剩餘機率是 $ 2^{u+v-w} $ .
使用 AES ( $ w=128 $ ,無論密鑰寬度如何)和 $ u=v=40 $ ( $ n $ 和 $ m $ 高達約一萬億),這些剩餘機率是 $ 2^{-48} $ . 問題是,隨機數上升了 $ 2^{128} $ (關於 $ 39 $ 十進制數字)。經典的3DES( $ w=64 $ ) 或相對未經證實的Speck ( $ w\in{32,48,64,96,128} $ ) 是替代品。
如果你想要一個更短的唯一類隨機數(作為對應的更高的剩餘機率,隨機位串是可以接受的),或者更多的選擇 $ w $ , 使用保格式加密;我們對此有很多疑問。