密碼學05(序列密碼)

序列密碼

根據密碼算法對明文信息處理的方式,對稱密碼體系分爲分組密碼和序列密碼

基本概念

序列密碼的明文塊是以字節(8位)或以1位爲單位,相比分組密碼來說要更小
序列密碼每一步使用的密鑰的都不一樣,存在一個密鑰流生成器,密鑰流和明文分組一樣長。(避免了明文分組一樣時生成的密文一樣)
理論上加密安全性比分組密碼好。
在這裏插入圖片描述

RC4序列密碼

RC4序列密碼算法(密鑰產生算法)

RC4序列密碼是一種基於非線性數據表變換的序列密碼。
包含兩個算法:密鑰調度算法(KSA)、僞隨機生成算法(PRGA)

密鑰調度算法(KSA)

以一個長度爲l 字節的初始密鑰作爲輸入,以一個恆等置換的S 盒開始,常用的RC4的S盒n=8,即可以生成28 = 256 個元素的數組S,KSA初始化S,取S[ i ] = i,0 <= i <= 255,並選擇0~255中的一個子序列作爲密鑰,填充到數組t[0],t[i],……t[255]中,如果密鑰長度小於255則依次重複填充,直至被填滿(例如選擇567爲序列,則將567反覆填充到t中),令j = 0,對於i 從 0~255 循環①j = (j + S[i]+K[i]) mod 256,②交換s[i]和s[j]

		//ksa算法
        for(int i = 0; i < 256; ++i){
            S[i] = i;
            T[i] = K[i % keylen];
        }
        int j = 0;
        for(int i = 0; i < 256; ++i){
            j = (j + S[i] + T[i]) % 256;
            //交換s[i]與s[j]
            S[i] = S[i] + S[j];
            S[j] = S[i] - S[j];
            S[i] = S[i] - S[j];
        }
僞隨機生成算法(PRGA)

僞隨機生成算法是建立在密鑰調度算之上的,KSA將數組S進行初始隨機化排列後,PRGA從數組S中隨機選取元素作爲密鑰流字節,同時修改數組S的排序。反覆該過程直到生成的二進制的數量等於明文位的數量。

加密

將得到的密鑰字符K與明文字符進行異或運算便可得到密文。
由於S表中可能的排列有256!個,所以可以抵抗窮舉攻擊。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章