• RAS RC4 AES 加密 MD5


    这两者唯一的相同点是设计者中都包含了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、等等)

     http://blog.csdn.net/youxijishu/article/details/52653248

    5.4 协议完整性验证

     尽管我们对消息做了加密,但也不是万无一失的,为了进一步确保消息没有被篡改,我们需要对消息的完整性进行检测,使用数字摘要的方式,首先客户端对userid及之后的协议信息进行AES加密,加密之后取它的md5值,md5值用于验证数据的完整性。这个md5值会被传送到服务器,如果协议信息被修改了,那个md5就会不同。

    5.5 保证md5数字摘要的值的安全

    为了防止非法用户修改协议内容后,模拟客户端操作重新生成新的数字摘要信息,我们对生成的数字摘要信息进行二次加密,这次使用RSA的公钥对md5的值进行加密,将加密的内容和其它信息一起发送到服务器。服务器根据ip向登陆服务器拿到AES的公钥和RSA的私钥,先用RSA 私钥取出客户端加密的md5值,服务器端计算userid后面的数据的md5值,如果两个md5值一样,说明安全的。如果不一样,说明用户是非法的,加入黑名单。因为RAS使用公钥加密,必须使用对应的私钥才能解密,而且不同的公钥对应的私钥不同,这样就算非法用户重新生成了数字摘要,在服务器端也是验证不通过的。

    5.6 取出明文信息

     当服务器收到报文后,对报文进行数子摘要验证通过之后,服务器端使用用户自己对应的AES的公钥,解密数据,获得明文数据。为了保证安全,每个用户的AES公钥可能不一样。

     

     

    Message Digest Algorithm MD5(中文名为消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。该算法的文件号为RFC 1321(R.Rivest,MIT Laboratory for Computer Science and RSA Data Security Inc. April 1992)。

     

    MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一(又译摘要算法哈希算法),主流编程语言普遍已有MD5实现。将数据(如汉字)运算为另一固定长度值,是杂凑算法的基础原理,MD5的前身有MD2、MD3MD4

     

    MD5算法具有以下特点:

     

    1、压缩性:任意长度的数据,算出的MD5值长度都是固定的。

     

    2、容易计算:从原数据计算出MD5值很容易。

     

    3、抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。

     

    4、强抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。

     

    MD5的作用是让大容量信息在用数字签名软件签署私人密钥前被"压缩"成一种保密的格式(就是把一个任意长度的字节串变换成一定长的十六进制数字串)。除了MD5以外,其中比较有名的还有sha-1RIPEMD以及Haval等。

     

  • 相关阅读:
    【转】Java集合框架面试问题集锦
    【转】Hibernate面试问题集锦: 概述
    【转】常见Java面试题 – 第四部分:迭代(iteration)和递归(recursion)
    【转】常见Java面试题 – 第三部分:重载(overloading)与重写(overriding)
    【转】常见Java面试题 – 第二部分:equals与==
    【转】常见Java面试题 – 第一部分:非可变性(Immutability)和对象引用(Object reference)
    【转】你应该关注的几个Eclipse超酷插件
    【转】Eclipse插件收藏列表
    【转】最受欢迎的8位Java牛人
    【转】改进异常处理的6条建议
  • 原文地址:https://www.cnblogs.com/timeObjserver/p/6050449.html
Copyright © 2020-2023  润新知