美文网首页
网站安全: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算法数据加密传输

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