geffe序列生成器由三個長度為l1,l2,l3的最長lfsr定義組成,其中l1,l2,l3兩兩互素其中lfsr2作為控制生成器使用。其非線性組合函式為:
f (x
1,x2
,x3)
=x1x
2⊕x2
x3⊕x
3f(x_1,x_2,x_3)=x_1x_2\oplus x_2x_3\oplus x_3
f(x1,
x2,
x3)
=x1
x2⊕
x2x
3⊕x
3其金鑰流週期為 (2l1-1) (2l2-1) (2l3-1)
線性複雜度為 l=l1l2+l2l3+l3
結構圖為
當lfsr2輸出為1時,lfsr2與lfsr1相連線;當lfsr2輸出0時,lfsr2與lfsr3相連線。若設lfsri的輸出序列為(a(i)
k}(i=1,2,3),則輸出序列(bk)可以表示為
b k=
ak1a
k2+a
k3ak
1‾=a
k1ak
2+ak
3ak2
+ak3
b_k=a_k^1a_k^2+a_k^3\overline=a_k^1a_k^2+a_k^3a_k^2+a_k^3
bk=ak
1ak
2+a
k3a
k1
=ak1
ak2
+ak
3ak
2+a
k3geffe生成器實際上認為是不夠安全的。
雖然這個發生器從理論上來看似乎很好,但是實質上你是乙個很弱的密碼,不能夠抵禦相關的攻擊。
這是因為發射器的輸出有75%與lfsr1的時間係數相同。因此若已知lfsr的級數n1和各級的係數c1,c2,…,cn1,便能猜出lfsr1的初始值和暫存器所輸出的序列,就可猜出lfsr2 的輸出中與這個發射器的相同的次數。如果猜對了,這兩個序列相同的概論就是75%,若猜錯了,兩個序列相同的概率為50%。
類似的 ,發射器輸出與lfsr3的輸出相等的概論為75%,有了這種相關性,金鑰序列發生器很容易被破譯。
例如,如果三個本原多項式都是三項,其中最大長度為n,那麼僅需要37n的一段輸出序列就能夠重構這三個lfsr的內部狀態。
序列號生成器
生成序列號,最大值為max val。如果達到max val,從0開始。public class serialgenerator return serialno 求整數有幾位,如234是3位。param i return private static final int getrnum int i i...
Oracle序列生成器
三 序列裂縫 四 修改序列 五 刪除序列 在實際開發中,設計資料表的時候會把某些字段定義成乙個自動增長的 唯一的流水號,例如記錄編號 日誌編號等,mysql和sql server採用的是自增欄位,oracle和postgresql採用了更靈活的序列生成器。在本文中,把序列生成器簡稱為序列。建立序列的...
Oracle序列生成器
三 序列裂縫 四 修改序列 五 刪除序列 在實際開發中,設計資料表的時候會把某些字段定義成乙個自動增長的 唯一的流水號,例如記錄編號 日誌編號等,mysql和sql server採用的是自增欄位,oracle和postgresql採用了更靈活的序列生成器。在本文中,把序列生成器簡稱為序列。建立序列的...