RSA和AES结合使用

接上篇的RSA和AES算法加密之后,AES对称算法对数据量大的加密比较快,而RSA公私钥加密的话会影响加密效率,但是AES的加密与解密的密钥是一致的,导致密钥不能外泄,密钥在网络传输过程中,很有可能会导致密钥外泄。
由此可以将RSA和AES两种结合起来,让RSA来加密AES密钥,AES加密内容,这样效率和安全性都能得到保障。

以下是一个流程图和流程说明。

1.服务端产生RSA密钥对,把公钥发给客户端
2.客户端的明文文用AES密钥加密生成密文,然后通过RSA公钥加密AES密钥,就生成了key和info
3.把这两个发送给服务端,用RSA私钥解密得到AES密钥
4.再用AES密钥去解密密文,得到明文

注册登录时的密码加密

MD5加盐

这是一篇比较详细的关于MD5的原文链接:https://blog.csdn.net/china_jeffery/article/details/78789108

MD5是MD5消息摘要算法的简称(英语:MD5 Message-Digest Algorithm),是一种广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(即哈希值),用于确保信息传输的完整性。MD5由罗纳德·李维斯特设计,于1992年公开,用以取代MD4算法。这套算法的程序在RFC 1321 中被加以规范。
将数据(如一段文字)运算变为另一固定长度值,是散列算法的基础原理。
MD5已经被证实可以被碰撞破解。对于需要高度安全性的数据,专家一般建议改用其他算法,如SHA-2。

只要明文相同,那么MD5加密后的密文就相同,于是攻击者就可以通过撞库的方式来破解出明文。 https://www.cmd5.com/ 这是一个破解MD5的网站,是收集了大量的MD5密文和明文的一个库,所以现在的MD5并不安全。

这是我构想的一个密码传输的流程:(如果有哪里不对或者有更好的欢迎交流)

这时候就需要加点佐料,让它变变味儿啦。

加盐的算法有很多,考虑到加盐的目的(防止拥有系统底层权限的人员),想做到绝对不可反查是很困难的,需要有其他软件或者硬件的协助,在很多场景下的实用性比较差。如果只是想增加反查的难度,倒是有很多方法可以选择,一种便利的方法是md5(Password+UserName),即将用户名和密码字符串相加再MD5,这样的MD5摘要基本上不可反查。但有时候用户名可能会发生变化,发生变化后密码即不可用了(验证密码实际上就是再次计算摘要的过程)。

所以要MD5加盐了,“盐”指的是计算机动态生成的随机码,这个随机码会与密码一起被MD5进行散列计算,再与生成序列一同存进数据库。再次进行登录验证密码时,由于经过散列计算处理的数据不可逆向恢复,所以需通过对输入密码结合随机码进行散列计算,将得到的值再去数据库进行匹配

MD5是不可逆的,所以就算是管理员打开数据库中的数据时也是经过加密的,这样更保障了数据的安全性,在我们日常中需要忘记密码了,也是只能改密码并不能获取到原来的密码。

因此我们做了一个非常简单的算法,每次保存密码到数据库时,都生成一个随机16位数字,将这16位数字和密码相加再求MD5摘要,然后在摘要中再将这16位数字按规则掺入形成一个48位的字符串。在验证密码时再从48位字符串中按规则提取16位数字,和用户输入的密码相加再MD5。按照这种方法形成的结果肯定是不可直接反查的,且同一个密码每次保存时形成的摘要也都是不同的。

或者 可以往密码中加盐的时候,固定加的位置,比如说从第三位到第六位是盐等等,使得其他人获取不到真正的密码。

对于AES和RSA算法的结合使用以及MD5加盐注册登录时的密码加密相关推荐

  1. Java实现AES和RSA算法

    说明: 本文是用 Java1.8 官方的工具类进行的封装,两种加密算法的原理参考: AES:https://blog.csdn.net/gulang03/article/details/8117585 ...

  2. python实现RSA算法,对数据进行加密认证

    RSA算法 RSA 一.数学原理 二.实现代码 1 生成素数 2 生成秘钥 3 对数据进行加密.解密 总结 RSA RSA是一种非对称加密体制,由公钥和私钥组成,数学原理是实数域的模余法.在使用私钥对 ...

  3. RSA算法原理详解(简单易懂)

    本文主要是简单高效地讲解RSA算法的基本数学原理以及加解密的步骤,算法背景以及设计到的数学证明省略.本文主要参考wikipedia和博文<非对称加密算法–RSA加密原理>. 非对称公钥加密 ...

  4. RSA加密、解密、签名、验签(验证签名)RSA算法原理

    转载链接:https://www.jianshu.com/p/8dc4a5f64e06 https://www.cnblogs.com/pcheng/p/9629621.html RSA原理:http ...

  5. 使用Python实现RSA加密算法及详解RSA算法

    代码已经放上github : https://github.com/chroje/RSA 一.非对称加密算法 1.乙方生成两把密钥(公钥和私钥).公钥是公开的,任何人都可以获得,私钥则是保密的. 2. ...

  6. RSA算法原理【超清晰】

    目录 一.一点历史 二.互质关系 三.欧拉函数 四.欧拉定理 五.模反元素 六.密钥的生成步骤 八.加密与解密 九.私钥解密的证明 一.一点历史 了解一个东西,首先我们要关注他的历史. 1976年以前 ...

  7. RSA算法原理(二)

    RSA算法原理(二) 转载:http://www.ruanyifeng.com/blog/2013/07/rsa_algorithm_part_two.html 上一次,我介绍了一些数论知识. 有了这 ...

  8. (2)非对称密钥加密——RSA算法ECC算法(简介)

    一:目前主流的加密密钥分为两大类:对称密钥和非对称密钥 1)对称密钥:数据发送方和接收方使用的是同一个密钥,即加密和解密的密钥是同一个(K) 2)非对称密钥:数据发送方使用接收方的公钥进行加密,接收方 ...

  9. 基于java注册登录MD5算法加盐加密颁发 Token身份令牌使用各种邮箱发送验证码详解雪花算法

    目的作用 == 在项目中,为了防止别人窥视我们的密码通常我们会采取一些加密方式.这里简单介绍一下MD5 加盐加密方法,MD5叫做信息-摘要算法,严格来说不是加密方式,而是信息摘要. 对于可以接触到数据 ...

最新文章

  1. 我是架构师--设计模式-单例模式
  2. Pytorch学习-Task1
  3. 获取URL中 后面的参数值
  4. 使用 python 操作 redis
  5. ubuntu mysql 内存满了_Ubuntu mysql可以把data防止到内存盘中
  6. C++最新使用开源openssl实现输入是文件,输出是文件的AES加解密的代码
  7. Django(三)模板
  8. java 创建静态方法_Java 在静态方法中创建Local类
  9. 投资赚钱发财, 财务自由,需要如下几个因素
  10. indesign缩放图片被切割_indesign修改图片大小的操作流程
  11. java 参数校验 优雅的,SpringBoot 如何优雅的进行参数校验
  12. eclipse -- git 提示
  13. python实战演练一:抓取我自己csdm博客信息的标题和文章链接,并存入文件夹《抓取信息》
  14. 计算机主机跳线连接图片,台式电脑主机五根跳线怎么接?红白 蓝白 绿 白 橙白...
  15. vue通过识别字符串中的分号进行换行
  16. 小程序地理位置接口申请
  17. 操作系统七种寻址方式
  18. 计算机工程师考证要求
  19. php 项目创意,JavaScript实现“创意时钟”项目
  20. 库存中货物超期的天数

热门文章

  1. python pip清华源安装库
  2. 基于 Scheduled SQL 对 VPC FlowLog 实现细粒度时间窗口分析
  3. 万张图片,流畅体验——记一次 Vue 列表渲染
  4. 直播预告 | 企业CICD规模化落地
  5. 日志服务(SLS)集成 Spark 流计算实战
  6. 蚂蚁“备战”TPC-C这1年
  7. 阿里云发布多款云管工具,任何角色都可以轻松完成云上运维
  8. 机器学习必备:前20名Python人工智能和机器学习开源项目
  9. 在 Kubernetes 集群中使用 MetalLB 作为 LoadBalancer(下)
  10. Quorum 和唱票那回事