rc4算法是对称算法吗/rc4加密算法详解

2021-11-09
2769

rc4算法是对称算法吗
RC4于1987年提出,和DES算法一样,是一种对称加密算法,也就是说使用的密钥为单钥(或称为私钥)。但不同于DES的是,RC4不是对明文进行分组处理,而是字节流的方式依次加密明文中的每一个字节,解密的时候也是依次对密文中的每一个字节进行解密。
RC4的特点是运算速度快,密钥长度为1–256BYTE可变。

rc4加密算法详解

RC4加解密相当于是对合运算,所以只要输入密钥相同,那么执行相同的操作即可对数据实现加密和解密。
而RC4和基于以为寄存器的序列密码不同,它是基于非线性数据表变换的序列密码,它以一个足够大的数据表为基础,对表进行非线性变化,从而产生非线性的密钥序列。
rc4加密算法详解流如下:
首先,RC4取一个256字节构成的S表,并引入一个256字节的辅助表R

1.对S表进行线性填充
即初始化S表,另,S[n] = n; (0<=n<=255)

2.用种子密钥填充R表,如果种子密钥的长度小于R表的长度(256),则依次重复填充,直至将R表填满
其实依次重复填充的弊端十分明显:

例如用户输入了密钥a,那么重复填充之后R表中全部为a
而用户输了密钥aa,那么重复填充之后R表也是全部为a
这样显然不是一个好的结果

还有一种做法是做Padding,即若密钥长度小于R表长度时,用固定格式的 padding来填充剩下的部分。

3.用R表对S表进行随机化处理
其操作算法如下:
①J = 0;
②对于I = 0 : 255
J = J + S[i] + R[j] mod 256;
swap(S[i],S[j]);//交换S[i]与S[j]
代码实现:

4.加密解密核心功能
生成了随机化S表之后,就可以对数据执行加密或解密算法了。
RC4在加密解密时可以看成一个有限状态自动机,通过不断产生新的状态来产生出密钥字节。
RC4的下一状态函数定义如下:
①I = 0 ,J = 0;//初始化状态
②I = I + 1 mod 256;
③J = J + S[i] mod 256
④swap(S[i],S[j]);//交换S[i]与S[j]
而RC4的输出函数定义为:
①h = S[i] + S[j] mod 256;
②k = S[h];
输出函数的输出k即产生出的密钥字节,让RC4有限状态自动机一个一个运转,便输出密钥字节序列。

在加密时,将密钥字节k与明文字节模二加便完成了加密,解密时将密钥字节k与密文字节模二加就完成了解密。

代码实现:

通过以上流程,RC4算法就基本完成了。

相关工具推荐:如若需要rc4加解密算法工具可直接点击。

转载时必须以链接形式注明原始出处及本声明

扫描关注公众号