平时做技术实践时,很多问题不是概念不会,而是细节没串起来。拿“RC4加密关键变量及算法特点原理”来说,它看着像小点,放到项目里常会牵出环境、配置、兼容性和维护成本。下面按实际采用顺序,把思路、关键写法和容易踩坑的地方讲清楚,便于大家直接对照操作。
什么是RC4
在这个场景下,RC4加密算法是大名鼎鼎的RSA三人组中的头号人物Ron Rivest在1987年设计的密钥长度可变的流加密算法簇。RC4算法是一种在电子信息领域加密的技术手段,用来无线通信网络,是一种电子密码,只有经过授权的用户才能享受该服务。
实际处理时,RC4 流密码是采用最广泛的流密码之一,它借助算法一次一个字节地加密消息,轻松同时且操作速度快。 RC4是一种在电子信息领域加密的技术手段,用来无线通信网络,是一种电子密码,只有经过授权的用户才能享受该服务,采用 64 位或 128 位密钥大小。它通常用来安全套接层 (SSL)、传输层安全 (TLS) 等应用,也用来 IEEE 802.11 无线 LAN 标准。
RC4加密是一种典型的对称加密算法。
RC4算法特点
(1)、算法简洁易于软件实现,加密速度快,安全性比较高;
(2)、密钥长度可变,一般用256个字节。
RC4加密的几个关键变量
1、密钥流:RC4算法的关键是根据明文和密钥生成相应的密钥流,密钥流的长度和明文的长度是对应的,也就是说明文的长度是500字节,那么密钥流也是500字节。当然,加密生成的密文也是500字节,因为密文第i字节=明文第i字节^密钥流第i字节;
2、状态向量S:长度为256,S[0],S[1].....S[255]。每个单元都是一个字节,算法运行的任何时候,S都包括0-255的8比特数的排列组合,只不过值的位置发生了变换;
3、临时向量T:长度也为256,每个单元也是一个字节。如果密钥的长度是256字节,就直接把密钥的值赋给T,否则,轮转地将密钥的每个字节赋给T;
4、密钥K:长度为1-256字节,注意密钥的长度keylen 与明文长度、密钥流的长度没有必然关系,通常密钥的长度取为16字节(128比特)。
RC4加密原理
1、初始化S和T
for i=0 to 255 do
S[i] =i;
T[i]=K[ imodkeylen ];
2、初始排列S
for i=0 to 255 do
j= ( j+S[i]+T[i])mod256;
swap(S[i],S[j]);
3、产生密钥流
for r=0 to len do //r为明文长度,r字节
i=(i+1) mod 256;
j=(j+S[i])mod 256;
swap(S[i],S[j]);
t=(S[i]+S[j])mod 256;
k[r]=S[t];
借助知道RC4加密的原理,能够根据具体情境写出加密或者解密的脚本
理解这一步时,以上就是RC4加密关键变量及算法特点原理详解的详细内容,更多关于RC4加密关键变量算法的资料请关注脚本之家其它相关文章!
- JS实现的RC4加密算法示例
- java实现的RC4加密解密算法示例
- go语言采用RC4加密的方法
- Python中实现的RC4算法
- php实现rc4加密算法代码
- C和C++中实现对数据的流加密RC4算法