RC4加密算法理解
-
概念
-
在密码学中,RC4(来自Rivest Cipher 4的缩写)是一种流加密算法,密钥长度可变。它加解密使用相同的密钥,因此也属于对称加密算法。RC4是有线等效加密(WEP)中采用的加密算法,也曾经是TLS可采用的算法之一。
-
原理:总体来说包括两个部分:1.初始化密匙盒子。2.伪随机密码生成
PS:不需要过分转牛角为什么能这样子加密,这涉及到数学问题了,不过有兴趣可以去理解一下。
-
流程
- 初始化盒子S-box,256个字节,分别赋值为0-255.(生成的种子1)
- 初始化密匙,就是你输入的flag,然后轮转填满256个字节,如:输入abc,就生成abcabcabc…(生成种子2),以此类推,类比。这里就先记作k[25600]吧。
- 开始对盒子S-box打乱(打乱种子1)------>
j=0;//临时变量 for(i=0;i<256;i++) j=(j+Sbox[i]+k[i])mod256;//记住就好,小菜鸡也不大晓得原理鸭 //k是生成种子2 swap(Sbox[i],Sbox[j]);//打乱,swap函数自己简单写个去实现就好了
- 下面开始生成密匙流(最后就是要用这个密匙流来异或加密的)
- 先计算输入flag的字节数(strlen),然后开始生成对应的异或要用的密匙流)------->
i=0; j=0; while(lenth--) { i=(i+1)mod256; j=(j+Sbox[i])mod 256; swap(s[i],s[j]); t=(S[i]+S[j])mod256; keystream=Sbox[t]; Data[对应的位数]^=k;//此处完成加密 }
-
总结
RC4算法还是蛮好理解的,多敲几遍就好了。