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、MD3和MD4。
MD5算法具有以下特点:
1、压缩性:任意长度的数据,算出的MD5值长度都是固定的。
2、容易计算:从原数据计算出MD5值很容易。
3、抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。
4、强抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。
MD5的作用是让大容量信息在用数字签名软件签署私人密钥前被"压缩"成一种保密的格式(就是把一个任意长度的字节串变换成一定长的十六进制数字串)。除了MD5以外,其中比较有名的还有sha-1、RIPEMD以及Haval等。

posted on 2016-11-10 12:24 时空观察者9号 阅读(...) 评论(...) 编辑 收藏

RAS RC4 AES 加密 MD5相关推荐

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

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

  2. DES, RC4, RC5, AES, RSA, MD5, SHA1 安全算法分析

    1. 基于对称密钥的加密算法主要有DES.RC4.RC5, AES 对称加密(也叫私钥加密)指加密和解密使用相同密钥的加密算法.有时又叫传统密码算法,就是加密密钥能够从解密密钥中推算出来,同时解密密钥 ...

  3. 【JS 逆向百例】某易支付密码 MD5+AES 加密分析

    关注微信公众号:K哥爬虫,持续分享爬虫进阶.JS/安卓逆向等技术干货! 声明 本文章中所有内容仅供学习交流,抓包内容.敏感网址.数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后 ...

  4. aes加密 java_Android逆向中记算法识别(aes、tea、md5)

    0x00 前言 1.算法逆向 分析android so的时候,总会遇到一些算法,掌握算法的识别特征对逆向工作效率提升很大,小伙伴给我发来一道android题,涉及几个算法,记录一下做题过程. 2.题目 ...

  5. Delphi调用C#的加密解密(Base64/AES/DES/MD5可扩充)

    1. 背景: 近期,由于工作上与第三方公司传输数据的时候需要采取数据加密,但是我们采用的时较低版本的Delphi 6:由于加密算法等差异,导致在传输的加密数据第三方一致解析不了(具体问题表现为base ...

  6. RAS、AES、DES加密

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

  7. qt MD5 和AES 加密

    一 .MD5 加密 #include <QCryptographicHash>// MD5 加密 QString Dialog_login::MD5_encryption(const QS ...

  8. AES加密解密SHA1、SHA加密MD5加密

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

  9. qt实现程序密钥注册功能,MD5加密+AES加密,并实现一台电脑系统一个密钥

    qt实现了一个给自己软件加密的功能. 原理是: 需要被注册的软件第一次运行的时候,在系统的注册表里面注册一个键值,如下: 这个值作为生成密钥的用户识别号,然后生成密钥文件key.db,把这个key.d ...

最新文章

  1. Leetcode 764. Largest Plus Sign
  2. 生命真的源于宇宙吗?多名宇航员身体,都曾发生“不可逆”的变化
  3. posix多线程程序使用条件变量的一个常见bug
  4. 第十七届全国大学智能车竞赛赛区划分
  5. EasyUI中放置Droppable的使用以及实现拖拽排序
  6. vue-devtools介绍与安装
  7. Kafka配置offsets.retention.minutes和log.retention.minutes的区别
  8. 满汉全席(洛谷-P4171)
  9. 直方图匹配(histogram matching):使两幅影像的色调保持一致
  10. 法学类计算机专业,就业蓝皮书:计算机类专业领跑薪酬榜 法学专业被亮“红牌”...
  11. 25岁女生,转行学前端合适吗?
  12. [zz]u盘做系统启动盘后容量变小的解决方法 8GU盘变成2G 或 xG变成2G
  13. 新版sonar代码审查问题总结
  14. JavaScript执行机制(彻底弄懂宏任务微任务)
  15. keep行走和计步_KEEP跑步计步器
  16. NCCL无root权限编译安装
  17. 疫情肆虐,延迟返工,今年的“金三银四”还能照常进行吗?
  18. 操作系统实验—ucore Lab1
  19. 【广告架构day1】爱奇艺广告系统的演进之路:实践中的一些经验
  20. MySQL5.7修改默认root密码

热门文章

  1. Leaflet中使用Leaflet.Polyline.SnakeAnim插件实现水流模拟效果
  2. CentOS中配置Mysql表名忽略大小写以及提示:Caused by: org.quartz.impl.jdbcjobstore.LockException: Failure obtaining d
  3. C#中将字符串内容写入到txt文件中
  4. cuda7.5 和cuda8共存
  5. php自定义中文分词方法,PHPAnalysis中文分词类详解
  6. oracle sql 调用自定义函数_PSCAD入门教程(第7节):怎样调用fortran编写的自定义函数?(附模型)...
  7. 八城联动丨神策 2020 数据驱动用户大会「武汉站」即将重磅开幕!
  8. 视频 + PPT | 数字化运营,从理论到实践
  9. 今天,“场景赋能•驱动有数”,神策数据 2018 数据驱动大会在京成功举办
  10. 为什么初创企业应该计算 LTV / CAC,以及如何正确应用它?