美文网首页
网站安全:RSA和AES算法数据加密传输

网站安全:RSA和AES算法数据加密传输

作者: 昵称已被使用_ | 来源:发表于2019-03-25 11:11 被阅读0次

前言

  • 近两年来整个大环境下都在强调安全生产,网站安全问题也越来越突出,所以每个网站都要对敏感数据加密传输,本文则介绍业界最常用的两种加密算法,RSA和AES,希望各位尽快把系统安全问题补起来

效果展示

关于RSA

  • RSA加密算法是一种非对称加密算法,什么是非对称加密?上面在线体验链接已经看到,RSA加密需要公钥,解密需要私钥,这公钥和私钥不一样,所以就是非对称加密
  • 在实际使用中,公钥保存在客户端(前端),私钥只保存在服务端(后端),公钥用于加密,把加密后的数据传给服务端,服务端用私钥解密,由于私钥只保存在服务端,所以只有服务端能解出密文,所以数据在传输过程中被“有心人”截取也不能解密
    注:上面在线体验链接,我给出了私钥解密功能,实际私钥解密要放在服务端,一会介绍服务端用java语言解密方法;为了保证私钥的安全性,公司有后端人员离职,可以考虑更换秘钥对
  • 非对称加密的缺点是效率相对比较低,所以一般只用于加密少量敏感数据:如token、用户名密码等;由于是公钥加密,私钥解密,私钥一定要放在服务端,所以也只是客户端向服务端传输加密数据;如何安全的加密大量数据?如何让服务端返回的数据也是安全加密的?这时候就要用RSA和AES的结合

关于AES

  • AES加密算法用到一个key值(随机生成一个字符串),这个key值同时用于加密和解密,所以叫对称加密,由于是对称加密所以加密效率高
  • 如何安全的加密并传输大量数据?
    客户端用key值加密数据,然后把key和加密的数据传给服务端,服务端用接收到的key解密,所以只要保证key值的传输安全就能保证数据安全,如何保证key的安全?你肯定想到了,就是用上面介绍的RSA非对称算法加密key,所以服务端最终接收到的数据是RSA加密的key和AES加密的真实内容,服务端先用私钥解密得到key,在用key解密密文
  • 如何让服务端返回的数据也是安全加密的?
    客户端动态生成key,用RAS非对称算法加密key,发起请求把加密后的key传给服务端,服务端用私钥解密得到key,用key使用AES对称算法加密数据,在把数据返回给前端,前端用自己生成的key解密数据

服务端

  • 服务端做什么事?用私钥解密数据;AES算法加密和解密数据;还可以生成RSA算法秘钥对
  • 下面演示java中使用RSA和AES加密算法,两种方法用到的加密类均来自java jdk自带的加密类,不用额外引入jar包,我用的是jdk1.8
  • 为了方便使用把RSA和AES加密算法封装为工具类方便调用,还有个测试类TestApi.java
    RSAUtils.java
    AESUtils.java
    TestApi.java

java-rsa测试流程

  1. 复制在线体验链接提供的私钥(图1),到测试类TestApi.java中privateKey(图2)
    图1
    图2
    2.点击ras加密,复制加密内容到上图2中的“bodyStr”中

    3.运行main方法,我们看到输入的内容是解密前的结果,说明前端公钥加密,后端私钥解密,js方法和java方法匹配

java-aes测试流程

  1. 复制key和加密内容到TestApi.java中,如下图2
    图1
    图2
  2. 运行main方法,可以看到下图加密的结果和上图1加密的结果一致,说明js方法和java方法匹配

在ionic中使用

其他

  • 实际工作中,前后端通讯均是通过异步请求,加密的内容均放在body中,并且传输的内容一般是json字符串,所以后端需要用Json工具类转为字符串到java对象,转java对象到字符串。这里提供一个封装的JacksonUtils.java工具类
    另外需要导入jar包,以下是我项目gradle项目配置
    compile 'com.fasterxml.jackson.core:jackson-annotations:2.8.0'
    compile 'com.fasterxml.jackson.core:jackson-core:2.8.10'
    compile 'com.fasterxml.jackson.core:jackson-databind:2.8.10'
  • 其他后端语言加密算法的实现请自行百度

SS

https://yanxiaojun617.com/fileService/file/ss/index.html

相关文章

  • 网站安全:RSA和AES算法数据加密传输

    前言 近两年来整个大环境下都在强调安全生产,网站安全问题也越来越突出,所以每个网站都要对敏感数据加密传输,本文则介...

  • AES+RSA组合算法 接口参数加解密

    了解此方案原理前,先了解下AES算法和RSA算法的差异 AES+RSA算法 AES 算法 AES 算法是一种对称加...

  • RSA 加密解密

    RSA简介 RSA算法是一种非对称加密算法,常被用于加密传输数据。如果配合数字摘要算法,也可用于文件签名。RSA算...

  • AES加密

    ****场景****公司接口安全需要RSA和AES混合使用,RSA已经走通,AES也预研成功。现将代码及注意事项贴...

  • AES vs 3DES

    AES和3DES都是数据加密算法,使用方法和目的相同。AES和3DES的区别是AES更快,并且更安全。AES的编码...

  • python3中Crypto的AES和RSA

    RSA加密一般使用RSA/ECB/PKCS1Padding(算法/工作模式/填充方式),AES加密一般使用AES/...

  • android 3DES加密和MD5加密

    经常使用加密算法:DES、3DES、RC4、AES,RSA等;对称加密:des,3des,aes非对称加密:rsa...

  • HASH&对称加密

    1、非对称加密(现代加密算法):RSA(不适合加密大数据)2、对称加密(传统加密算法):DES、3DES、AES;...

  • RSA算法原理(作者: 阮一峰)

    RSA算法原理(一) RSA算法原理(二) RSA C算法实现【 看雪安全论坛】

  • 常见的安全算法

    本文整理了常见的安全算法,包括MD5、SHA、DES、AES、RSA等,并写了完整的工具类(Java 版),工具类...

网友评论

      本文标题:网站安全:RSA和AES算法数据加密传输

      本文链接:https://www.haomeiwen.com/subject/ioydvqtx.html