流密碼加密(RC4和LFSR)

2021-10-13 19:00:43 字數 1545 閱讀 2287

演算法思想:

(1) 先初始化狀態向量s(256個位元組,用來作為金鑰流生成的種子1),按照公升序,給每個位元組賦值0,1,2,3,4,5,6…,254,255。

(2) 初始金鑰(由使用者輸入),長度任意。如果輸入長度小於256個位元組,則進行輪轉,直到填滿。例如輸入金鑰的是1,2,3,4,5,那麼填入的是1,2,3,4,5,1,2,3,4,5,1,2,3,4,5…。由上述輪轉過程得到256個位元組的向量t(用來作為金鑰流生成的種子2)

(3) 開始對狀態向量s進行置換操作(用來打亂初始種子1),按照下列規則進行,從第零個位元組開始,執行256次,保證每個位元組都得到處理。

j = 0;

for (i = 0 ; i < 256 ; i++)

這樣處理後的狀態向量s帶有一定的隨機性。

(4) 最後是秘鑰流的生成與加密。假設我的明文位元組數是datalength=1024個位元組(當然可以是任意個位元組)。

i=0;

j=0;

while(datalength–)

重要部分**實現:

(1) 對狀態向量s進行置換操作(用來打亂初始種子1)

(2) 秘鑰流的生成與加密

演算法思想:

(1) 首先我們定義兩個線性反饋移位暫存器(lfsr),並對初始狀態進行初始化,將lfsr的特徵多項式作為金鑰由使用者輸入(我們設定為8位金鑰)。得到金鑰我們就能根據以下線性反饋移位暫存器(lfsr)的原理,生成兩個序列。這個lfsr可以產生的最大序列長度為2^m-1。

(2) 將兩個序列分別作為jk觸發器的輸入端j、k,並且根據jk觸發器的結構及邏輯真值表,可以得到255位的金鑰流。

(3) 輸入明文時,先將明文轉換為二進位制字串,進行加密後,再轉化為字串。

重要部分**實現:

1、 將字串轉化為二進位制字串

2、 將二進位制字串轉化為字串

3、獲取兩個線性反饋移位暫存器(lfsr),將兩個序列分別作為jk觸發器的輸入端j、k,可以得到255位的金鑰流。

流密碼 python實現RC4加密

1 理解流密碼的基本思想 2 掌握rc4加密演算法的加解密過程和實現方法 3 採用自己熟悉的程式語言實現rc4密碼演算法。給定金鑰abcde,試對明文 shenzhen university 加密 注 明文包括空格,但不包括引號 rc4的python實現 defs box r s盒 s x for ...

RC4加密隨筆

1.原理 1.1 初始化金鑰 根據輸入的金鑰key,使用金鑰排程演算法ksa生成乙個256位元組的sbox。1.2 再通過偽隨機數生成演算法 prga 得到金鑰流 keystream 1.3 加密 金鑰流與明文進行異或運算得到密文 1.4 解密 密文與金鑰流進行異或運算得到明文 2.金鑰排程演算法k...

RC4加密 解密

建立rc4crypto類 using system using system.collections.generic using system.linq using system.text using system.web namespace rc.web.utility 有參構造器 密碼 publ...