首先是RC4算法的介绍:
RC4加密算法Ron Rivest(非常有名的非对称加密算法RSA三巨头之一)在1987年设计的,密钥长度可变的流加密算法簇。之所以称其为簇,是由于其核心部分的S-box长度可为任意,但一般为256字节。该算法的速度可以达到DES加密的10倍左右,且具有很高级别的非线性。RC4起初是用于保护商业机密的。但是在1994年9月,它的算法被发布在互联网上,也就不再有什么商业机密了。RC4也被叫做ARC4(Alleged RC4——所谓的RC4),因为RSA从来就没有正式发布过这个算法。
备注:RC4是对称密钥加密算法,而RSA是非对称的加密算法。由于RC4算法加密是采用的xor,所以,一旦子密钥序列出现了重复,密文就有可能被破解。那么,RC4算法生成的子密钥序列是否会出现重复呢?由于存在部分弱密钥,使得子密钥序列在不到100万字节内就发生了完全的重复,如果是部分重复,则可能在不到10万字节内就能发生重复,因此,推荐在使用RC4算法时,必须对加密密钥进行测试,判断其是否为弱密钥。根据目前的分析结果,没有任何的分析对于密钥长度达到128位的RC4有效,所以,RC4是目前最安全的加密算法之一。
转自:http://wzgyantai.blogbus.com/logs/31867065.html
RC4算法的原理:
RC4算法的原理很简单,包括初始化算法和伪随机子密码生成算法两大部分。假设S-box长度和密钥长度均为为n。先来看看算法的初始化部分(用类C伪代码表示):
for (i=0; i<n; i++)
s=i;
j=0;
for (i=0; i<n; i++)
{
j=(j+s+k)%256;
swap(s, s【j】);
}
在初始化的过程中,密钥的主要功能是将S-box搅乱,i确保S-box的每个元素都得到处理,j保证S-box的搅乱是随机的。而不同的S-box在经过伪随机子密码生成算法的处理后可以得到不同的子密钥序列,并且,该序列是随机的:
i=j=0;
while (明文未结束)
{
++i%=n;
j=(j+s)%n;
swap(s, s【j】);
sub_k=s((s+s【j】)%n);
}
得到的子密码sub_k用以和明文进行xor运算,得到密文,解密过程也完全相同。
下面是RC4算法的实现:
头文件:
主函数:
分享到:
相关推荐
RC4加密算法Ron Rivest(非常有名的非对称加密算法RSA三巨头之一)在1987年设计的,密钥长度可变的流加密算法簇。之所以称其为簇,是由于其核心部分的S-box长度可为任意,但一般为256字节。该算法的速度可以达到DES...
你可以从里面了解到A5算法和RC4算法是如何用代码实现。 A5算法是一种流密码算法,最初由欧洲电信标准协会(ETSI)用于第二代(2G)移动通信系统中的GSM(Global System for Mobile Communications)网络。A5算法用于...
这是我自己写的RC4加密算法,写的不是很好,请大家见谅,谢谢大家能支持!!!!
java RC4 算法源码 java RC4 算法源码 java RC4 算法源码
java编写的RC4算法,密钥在代码中给出,可修改
自己写的一个RC4算法的C语言实现 有不好的地方请指教 留下邮箱:sunling30@gmail.com
rc4算法的C语言实现
RC4很简单、很快速,再上一个C语言版本的RC4
RC4算法的代码实现,所用的语言是C++,内含RC4.cpp等文件
易语言汇编rc4算法源码。@易语言资源网站。
采用多线程实现RC4算法的加解密,并将结果进行日志输出
RC4算法的特点是算法简单,运行速度快,而且密钥长度是可变的,可变范围为1-256字节(8-2048比特),在如今技术支持的前提下,当密钥长度为128比特时,用暴力法搜索密钥已经不太可行,所以可以预见RC4的密钥范围任然...
用C语言实现RC5算法,完整代码。可以直接运行。
易语言汇编rc4算法源码,汇编rc4算法,公共_RC4
实现RC4算法,实现控制台对所有文件加解密。 附赠文档一份。
RC4是Rivest于1987年设计的一个加密算法,被广泛用到SSL、STL等协议中,本文发表在欧密上,是最新的攻击方法。
RC4算法实现,MFC编程,可视化界面。
实现RC4加密算法,其是密钥长度可变的流加密算法簇。之所以称其为簇,是由于其核心部分的S-box长度可为任意,但一般为256字节。该算法的速度可以达到DES加密的10倍左右。RC4算法的原理很简单,包括初始化算法和伪随...
密码算法RC4
在VC的开发环境下,建立头文件,调用各函数,进行编译实现代码!