DES AES RC4算法比较
根据密钥类型的不同,加密算法分为对称和非对称两种。对称加密系统是指加密和解密均采用同一把密钥。
对称加密算法是最常用的加密算法,优势在于算法公开,计算量小,加密效率高。常用的对称加密算法有DES、RC4、AES等。
三者算法的比较如下:
RC4算法原理
利用Key生成S盒——The key-scheduling algorithm (KSA)
密钥调度算法用于初始化数组S盒中的置换。“keylength”被定义为密钥中的字节数,并且可以在1≤keylength≤256的范围内,通常在5和16之间,对应于40到128位的密钥长度。首先,数组“S”被初始化为i。 然后以类似于PRGA的方式对S进行256次迭代处理,同时也以密钥的字节为单位进行混合。
伪代码如下:
for i from 0 to 255
S[i] := i
endfor
j := 0
for i from 0 to 255
j := (j + S[i] + key[i mod keylength]) mod 256
swap values of S[i] and S[j]
endfor
利用S盒生成密钥流——The pseudo-random generation algorithm(PRGA)
对于需要的迭代次数,PRGA修改状态并输出一个字节的密钥流。在每次迭代中,PRGA递增i,将i指向的S的值与j相加,交换S [i]和S [j]的值,然后在S [i] + S [j](模256)。每256个迭代,S的每个元素至少与另一个元素交换一次。
伪代码如下:
i := 0
j := 0
while GeneratingOutput:
i := (i + 1) mod 256
j := (j + S[i]) mod 256
swap values of S[i] and S[j]
K := S[(S[i] + S[j]) mod 256]
output K
endwhile
Java实现RC4加密算法
package RC4;
import java.util.Random;
public class Rc4Demo {
public static void main