流密碼

密鑰輸入到一個偽亂數發生器,該偽亂數發生器產生一串隨機的8位數,輸出的密鑰流和明文流的每個位元組進行對位異或運算,得到一個位元組,解密時使用相同的偽隨機序列,
設計流密碼需要注意:
- 加密序列的周期要長,偽亂數發生器使用的函式產生確定性的位流,該位流最侄訓出現重復,重復的周期越長,密碼分析的難度越大,
- 密鑰流應該盡可能的接近于真亂數流的特征,密鑰流的隨機特性越好,密文越隨機,密碼分析難度越大,
- 上圖中偽亂數發生器的輸出受到輸入密鑰K的調節,為了防止窮舉攻擊,密鑰應該足夠長,就目前最少應該128位,
分組密碼的優點是可以重復使用密鑰,但如果流密碼對兩個文明用相同密鑰加密,那么密文分析就相當容易,
RC4演算法
RC4是Ron Rivest為RSA公司在1987年設計的一種流密碼,密鑰長度可變,面向位元組操作,分析顯示該密碼的周期很可能大于,每輸出一個位元組的結果僅需要8到16潭訓器操作指令,軟體實作也很快,應用于網路瀏覽器和服務器同學制定了SSL/TLS標準,
下面為流密碼RC4的密鑰生成程序,

初始狀態的時候,S為0到255的填充,T為密鑰K(長度為keylen)的重復填充,

對已經初始填充的S進行初始化置換,置換程序為交換第i個位與第j個位,演算法為
j=0;
for i=0 to 255 do
j=(j+S[i]+T[i]) mod 256;
swap(S[i],T[i]);
完成S的初始化置換后,輸入的密鑰就不再使用,取代的是S,

密鑰流的生成程序如上圖所示,其演算法為

加密的時候,將k的值與明文的下一個位元組異或,解密時,將k的值與密文的下一個位元組異或,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/156601.html
標籤:python
下一篇:安裝部署WEB安全測驗試用的靶機
