热门关键词:

RC4 加密算法

添加时间:2022-03-06 22:49:03

来源:

浏览:

RC4是一种流密码和可变长度密钥算法。该算法一次加密一个字节(或一次加密更大的单位)。

密钥输入是伪随机位生成器,它产生一个 8 位数字流,在不知道输入密钥的情况下是不可预测的,生成器的输出称为密钥流,一次一个字节与使用 X- 的明文流密码组合或操作。

例子:


RC4 加密

10011000 ? 01010000 = 11001000    


RC4 解密

11001000 ? 01010000 = 10011000

密钥生成算法——

一个 1 到 256 字节的可变长度密钥用于初始化一个 256 字节的状态向量 S,其元素为 S[0] 到 S[255]。对于加密和解密,通过以系统方式选择 255 个条目中的一个,从 S 生成一个字节 k,然后再次排列 S 中的条目。


Key-Scheduling Algorithm:

初始化:S的条目被设置为等于从0到255的值,按升序排列,创建一个临时向量T。

如果密钥 k 的长度为 256 字节,则将 k 分配给 T。否则,对于长度为 (k-len) 字节的密钥,从 K 复制 T 的前 k-len 个元素,然后重复 K尽可能多地填充 T。这个想法如下所示:


for

    i = 0 to 255 do S[i] = i;

T[i] = K[i mod k - len];

我们使用 T 来产生 S 的初始排列。从 S[0] 到 S[255] 开始,并且对于每个 S[i] 算法,根据 T[i] 规定的方案将其与 S 中的另一个字节交换,但是S 仍将包含从 0 到 255 的值:



j = 0;

for

    i = 0 to 255 do

    {

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

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

    }

伪随机生成算法(Stream Generation):

一旦向量S被初始化,输入的key就不会被使用。在这一步中,对于每个 S[i] 算法,根据 S 的当前配置规定的方案将其与 S 中的另一个字节交换。到达 S[255] 后,该过程继续,再次从 S[0] 开始


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];

使用 X-Or() 加密:

55


新闻:

2015 年 9 月,微软宣布在 Microsoft Edge 和 Internet Explorer 11 中停止使用 RC4。


上一篇传输媒体的类型
下一篇
用户名 Name
评论 Comment

关注

深信服

  • 地 址:成都市人民南路四段成科西路三号 863国家孵化园
  • 电 话:18215 660330
  • 手机:18215 660330
  • 传 真:18215 660330
  • 邮 箱:179001057@qq.com
  • 邮政编码:610000