rc4和rc4md5

IV及初始化向量S,

密文:密文第i字节=明文第i字节^密钥流第i字节

密钥流:根据明文和密钥生成,密钥流长度和明文长度一样

状态向量S或IV:长度256个8位,256个字节

临时向量T:长度也是256个8位,256个字节,如果密钥的长度是256字节,就直接把密钥的值赋给T,否则,轮转地将密钥的每个字节赋给T;

密钥K:密钥长度与明文长度、密钥流的长度没有必然关系,通常密钥的长度取为16字节(128比特)

1.初始化S和T:

S的值升序被置为0-255

T的值是密钥K的值的循环复制

2.S的初始置换

用T产生S的初始置换,置换伪码如下

j = 0;

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

    j = (j + S[i] + T[i]) mod 256;

    swap(S[i] , S[j]);

  }

因为对S的操作仅是交换,S仍然包含所有值为0-255的元素。

3.密钥流的生成

 i , j = 0;

  while (true){

    i = (i + 1) mod 256;

    j = (j + S[i]) mod 256;

    swap(S[i] , S[j]);

    t = (S[i] + S[j]) mod 256;

    k = S[t];

  }

k即为密钥流的一个字节


WEP加密、RC4算法

RC4                                                                 

RSA实验室研发的对称加密 流 算法                                     

    实现简单                                                       

    速度快                                                         

加密: 对明文流和密钥流进行XOR计算                                   

解密: 对密文流和密钥流进行XOR计算                                   

RC4算法key由两个过程生成                                             

    合并IV和PSK,利用Key Scheduling Algorithm (KSA)算法生成起始状态表

    Pseudo-Random Generation Algorithm (PRGA)算法生成最终密钥流


rc4算法中加密用的key就是key本身,一般长度16字节128位

rc4md5中加密用的key是md5(key+iv)得到结果位16字节hash值128位

你可能感兴趣的:(rc4和rc4md5)