首页 > 代码库 > RAS RC4加密

RAS RC4加密

这两者唯一的相同点是设计者中都包含了MIT的Ron Revist教授。

RSA是公钥密码算法,优点:不用事先通过秘密信道传递密钥,可以用于数字签名。缺点:速度慢

RC4是序列密码算法,优点:速度快,缺点:需要事先秘密地传递密钥。

 

RAS是不对称加密,用一个公钥加密,用另一个私钥解密,或者反过来。理论上不可被破解  

RC4是对称加密,用同一个密钥进行加密解密。理论上暴力破解有很大可能,且已经有工具可以破解。

 

RC4算法原来是商业机密不公开的,但后来泄漏了,现在大家都知道了。

RAS加密的算法是公开的,大家都知道,但外人想要破解它却不可能的:

RSA的安全性依赖于大数分解。公钥和私钥都是两个大素数 
( 大于 100个十进制位)的函数。据猜测,从一个密钥和密文 
推断出明文的难度等同于分解两个大素数的积。   

  密钥对的产生:选择两个大素数,p 和q 。计算:   
n = p * q 
然后随机选择加密密钥e,要求 e 和 ( p - 1 ) * ( q - 1 ) 
互质。最后,利用Euclid 算法计算解密密钥d, 满足   

       e * d = 1 ( mod ( p - 1 ) * ( q - 1 ) ) 

其中n和d也要互质。数e和 
n是公钥,d是私钥

判定一个超大的数为素数是世界难题,如上若采用100位的大数作公钥或私钥,计算机暴力破解的时间复杂度约为O(10的200次方)

 

下面摘自新浪博客:http://blog.sina.com.cn/s/blog_65db998401012ahq.html

RC4的破解与防范

RC4算法是对称的加密算法,加密和解密的步骤都是众所周知的、固定不变的。唯一的保密性来自于初始的key。这个key理论上来说只有通讯双方知道,但是如果第三方从某种途径获得了这个key,那么第三方可以毫不费力地用RC4来解密他截获到的加密字符串了。

    第三方如何得到这个key呢?家贼难防,有人泄露给竞争对手,那实在是没办法的事情,赶紧换key吧;同时,第三方也可以不依赖于间谍,直接暴力破解,成功率应该不低。
    暴力破解的前提是,需要知道一些正确的解密结果。就是知道:若干加密串(或是加密串片段)对应的原文,这样才可以验证暴力破解是否成功。如果RC4只是用于有限个个体间通讯,那么破解方要获得这些先验的正确结果可能比较困难,但如果你提供服务的对象是整个互联网用户,那么想破解你的人自然可以合法地方便地获取到很多先验正确结果来辅助暴力破解。
    理论上来说,RC4算法是很难被破解的。RC4中用到的key是长度在[1,256]的unsigned char字符串,可能性就是256+256^2+256^3+....256^256≈256^256次方种可能性,量级在10^600以上。如果你真的设置了一个256byte(不是bit哦)的key,别人想要暴力破解几乎是不可能的。要知道,“天河一号”每秒也不过千万亿次(10^15)运算。但是设置这么长的key,加密解密的时间也是线性增长的,所以一般使用的key至多是几十byte而已。那这个复杂度就大大降低了,特别是现在分布式计算这么普及的情况下。
    最囧的是网上有些论文,不过是暴力破解了40bit(5byte)的RC4,居然也可以发到《计算机工程与科学》这类期刊上去,我只能呵呵了。
    那怎么样在不显著增加key长度的情况下,提高被人破解的难度呢?
    1.定时更换key,就像网民应该定时更换自己的密码一样。
    2.在真实原文里混杂一些随机字符串再加密。
    3.并不把加密串直接暴露给公众,可以对加密串做二次加密。(循环移位、字符-字符映射、按某种规则打散、再做一次RC4、等等)

 

RAS RC4加密