“流密码(序列密码)与Rc4算法”
Rc4是一种序列密码,它是一种可变密钥长度、面向字节操作的序列密码,一个明文字节与一个密钥字节相异或产生一个密文字节。
算法原理:对于n = 8位长的字,即以一个字节为单位,此时N = 256,用从1到256个字节的可变长度密钥初始化一个256个字节的状态矢量arr,arr中的元素arr[0],arr[1],,,arr[255],自始至终置换后的arr包含0~255的所有8比特数,密钥流中的密钥key由arr中256个元素按一定方式选出一个元素来充当;每生成一个key值,arr中的元素就被重新置换一次。
初始化:
将arr中的元素初始化成arr[0] = 0,arr[1] = 1,,,,,arr[255] = 255,设密钥的长度为len,对于arr中的每个元素,由密钥K将arr[i]中的元素进行置换,由于只是第数组中的元素进行错乱的排列,数组arr中还包含0~255个元素。
//初始化的核心代码
for (int i = 0; i < 256; i++)
{
arr[i] = i;
K[i] = key[i % len];
//K数组是将key中的元素循环排列于数组中
}
//将数组中的数据进行错乱排列
for (int i = 0; i < 256; i++)
{
j = (j + arr[i] + K[i]) % 256;
tmp = arr[i];
arr[i] = arr[j];
&