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

RAS RC4 AES 加密 MD5的更多相关文章

  1. C#加密解密(DES,AES,Base64,md5,SHA256,RSA,RC4)

    一:异或^简单加解密(数字类型) 1:原理: 异或用于比较两个二进制数的相应位,在执行按位"异或"运算时,如果两个二进制数的相应位都为1或者都为0,则返回0;如果两个二进制数的相应 ...

  2. 关于CryptoJS中md5加密以及aes加密的随笔

    最近项目中用到了各种加密,其中就包括从没有接触过得aes加密,因此从网上各种查,官方的一种说法: 高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学 ...

  3. iOS,一行代码进行RSA、DES 、AES、MD5加密、解密

    本文为投稿文章,作者:Flying_Einstein(简书) 加密的Demo,欢迎下载 JAVA端的加密解密,读者可以看我同事的这篇文章:http://www.jianshu.com/p/98569e ...

  4. MD5加密,Base64加密/解密,AES加密/解密

    1.从github上下载GTMBase64-master和AESCrypt-ObjC-master导入工程,如下图所示. 2.使用前的配置及注意事项: (1) 在build phases中的GTMBa ...

  5. JAVA实现AES和MD5加密

    package test; import java.io.UnsupportedEncodingException; import java.security.InvalidKeyException; ...

  6. RAS、AES、DES加密

    ---------------------------------------------------------------------------------------------------- ...

  7. Java 关于密码处理的工具类[MD5编码][AES加密/解密]

    项目中又遇到了加密问题,又去翻了半天,然后做测试,干脆就把常用的两类小结一下. 1.第一种所谓的MD5加密 其实也不算加密,只是基于Hash算法的不可逆编码而已,等于说,一旦经过MD5处理,是不可能从 ...

  8. 前端(小程序)项目Aes.js/Md5.js加密的处理方法

    做项目中需要对前端数据加密传输这个时候需要用到前端加密的算法主要是:Aes.js,Md5.js 一.Vue项目用到的aes.js加密. 1.直接在index.html引入aes.js或者在npm in ...

  9. AES加密解密&&SHA1、SHA加密&&MD5加密

    AES加密解密 SHA1.SHA加密 MD5加密 二话不说立即附上代码: package com.luo.util; import java.io.UnsupportedEncodingExcepti ...

随机推荐

  1. Android PopupWindow使用之地区、学校选择二级联动

    最近在做一个社交类APP时,希望用户在注册时根据地区来选择自己所在的学校,由于用户手动输入学校,可能会出现各种问题,不利于后面对用户信息的统计.于是决定在客户端做好设置,用户只要根据地区来选择就好.第 ...

  2. 当碰到非ARC写的文件时在ARC环境下运行报错时解决办法

  3. 我体验过的可以用的XCode插件

    XCode版本:7.0.1 其实插件的使用,如果能得到直接的xclugin后缀文件,是可以直接放置在隐藏文件夹中: /Users/HeYang/Library/Application Support/ ...

  4. Xcode的内存清理

    1.删除Xcode中多余的证书provisioning profile 手动删除: 打开finder,然后在最上面的前往中前往下方的路径,就可以看到你xcode运行到现在使用过的证书provision ...

  5. java使用this关键字调用本类重载构造器

    在构造器中可以调用本类的其他重载构造器,不能使用构造器名称来调用另一个构造器,而是应该使用Java特定的this(-.)来调用. this(-.)方法必须出现在构造器中的第一行,用来调用其他重载构造器 ...

  6. SpringMVC 返回 html 视图页面,SpringMVC与Servlet,Servlet重定向与转发

    1. SpringMVC与Servlet的关系 SpringMVC框架是建立在Servlet之上的,提供各种功能,各种封装,各种方便的同时,它一点儿也没有限制Servlet,我们完全可以在Spring ...

  7. 【nginx】关于gzip压缩

    有这么一段配置文件 gzip on # 默认值: gzip off # 开启或者关闭gzip模块 gzip_static off; # nginx对于静态文件的处理模块 # 该模块可以读取预先压缩的g ...

  8. ADO.NET Entity Framework,Code First简单示例

    一.安装EntityFramework: 在vs里打开NuGet,在命令行里输入:Install-Package EntityFramework. 二.基本使用方法 1.建立数据模型 class St ...

  9. 离散化+线段树 POJ 3277 City Horizon

    POJ 3277 City Horizon Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 18466 Accepted: 507 ...

  10. ZBrush中如何才能快速完成脸部雕刻(上)

    骨骼,是一门基础艺术,几百年来一直为伟大的艺术大师所研究,它曾经,也将一直是创作现实且可信角色的关键,提高骨骼知识更将大大提高雕刻技能. 查看更多内容请直接前往:http://www.zbrushcn ...