RC4演算法實現

2021-07-25 02:40:30 字數 1186 閱讀 4830

1、金鑰流:rc4演算法的關鍵是根據明文和金鑰生成相應的金鑰流,金鑰流的長度和明文的長度是對應的,也就是說明文的長度是500位元組,那麼金鑰流也是500位元組。當然,加密生成的密文也是500位元組,因為密文第i位元組=明文第i位元組^金鑰流第i位元組;

2、狀態向量s:長度為256,s[0],s[1].....s[255]。每個單元都是乙個位元組,演算法執行的任何時候,s都包括0-255的8位元數的排列組合,只不過值的位置發生了變換;

3、臨時向量t:長度也為256,每個單元也是乙個位元組。如果金鑰的長度是256位元組,就直接把金鑰的值賦給t,否則,輪轉地將金鑰的每個位元組賦給t;

4、金鑰k:長度為1-256位元組,注意金鑰的長度 keylen 與明文長度、金鑰流的長度沒有必然關係,通常金鑰的長度取為16位元組(128位元)。

5、演算法實現

templateinline void

swap(t& i, t& j)

class rc4

; /

#include "rc4.h"

void rc4::setkey(const char* key, int keylen)

int j = 0;

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

} void rc4::transform(char* output, const char* input, int len)

} /

#include #include #include #include "rc4.h"

int main()

rc4 rc4encrypt, rc4decrypt;

rc4encrypt.setkey(key, keylen);

rc4decrypt.setkey(key, keylen);

rc4encrypt.transform(output, input, strlen(input));

printf("after encrypt: %s/n", output);

rc4decrypt.transform(output, output, strlen(input));

printf("after decrypt: %s/n", output);

return 0;

}

RC4演算法實現

1 金鑰流 rc4演算法的關鍵是根據明文和金鑰生成相應的金鑰流,金鑰流的長度和明文的長度是對應的,也就是說明文的長度是500位元組,那麼金鑰流也是500位元組。當然,加密生成的密文也是500位元組,因為密文第i位元組 明文第i位元組 金鑰流第i位元組 2 狀態向量s 長度為256,s 0 s 1 s...

RC4金鑰演算法

rc4是面向位元組的序列密碼,乙個明文的位元組 8位元 與乙個金鑰的位元組進行異或就生成了乙個密文的位元組。乙個可以在金鑰流中生成一位元組的金鑰,包含從1到256位元組的任何位置。rc4演算法的結構非常簡單,由兩部分組成 金鑰排程演算法ksa和偽隨機金鑰序列生成演算法prga。1 金鑰排程演算法ks...

python學習之RC4演算法實現

rc4演算法是一種對稱加密演算法,即加密與解密的過程相同。假設其運算過程表示為rc4 key,data 其中key為金鑰,data為待處理的資料,則 密文 rc4 key,data data rc4 key,密文 也就是說,對一段資料 原文 做奇數次rc4運算,得到密文,做偶數次rc4運算,結果還是...