这两者唯一的相同点是设计者中都包含了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开发中使用Ant 二:进行一次完整的打包

    一次完整的Android打包要进行以下的几步:编译.代码混淆.打包apk.签名apk.apk优化. 为了能包涵使用NDK的情况,在这里使用一个有native代码的工程TestJni. 在工程根目录下新 ...

  2. iOS中发送HTTP请求的方案

    在iOS中,常见的发送HTTP请求的方案有 苹果原生(自带) NSURLConnection:用法简单,最古老最经典的一种方案 NSURLSession:功能比NSURLConnection更加强大, ...

  3. 8 Regular Expressions You Should Know

    Regular expressions are a language of their own. When you learn a new programming language, they're ...

  4. 菜鸟教程 Python100例 之实例29

    学习编程的路,走得好艰辛... 为了巩固基础知识,把菜鸟教程网上的实例拿来练习.. 在做到实例29时,看了网站给出的代码,觉得可以加强一下功能,不由得动了一下脑筋,如下: 原文题目: 题目:给一个不多 ...

  5. python数据结构-基本数据类型

  6. PYTHON3 urllib2库

    python 3.x中urllib库和urilib2库合并成了urllib库..其中urllib2.urlopen()变成了urllib.request.urlopen() urllib2.Reque ...

  7. 关于Solr搜索标点与符号的中文分词你必须知道的(mmseg源码改造)

    关于Solr搜索标点与符号的中文分词你必须知道的(mmseg源码改造) 摘要:在中文搜索中的标点.符号往往也是有语义的,比如我们要搜索“C++”或是“C#”,我们不希望搜索出来的全是“C”吧?那样对程 ...

  8. (四) openwrt单个ipk编译过程

    Tags : Makefile 本周是成胖子每周一博的第五周. 更好的阅读体验,请点击这里 [TOC] 前言 前一篇博客中,我们已经知道整个openwrt的编译顺序,本文我们来探讨与开发者息息相关的单 ...

  9. Linux 下从头再走 GTK+-3.0 (六)

    在 GTK3 中增加了一个 GtkApplicaton 类,便于我们处理多窗口程序,同时有了 GtkApplication 我们也更容易创建灵活,易用,界面美观的应用程序. 在前面的几个例子中,演示了 ...

  10. linux搭建mysql 5.6.28

    1.下载rmp文件 http://dev.mysql.com/downloads/mysql/ 2.安装 rpm -ivh MySQL-server--.linux_glibc2..x86_64.rp ...