美文网首页技术
前后端通信加密 1:加密过程

前后端通信加密 1:加密过程

作者: 朴朴乐 | 来源:发表于2018-09-01 14:58 被阅读644次

最近接手的一个项目中,要求前后端通信时,所有的信息都要加密传送。这里把加密的要点简单整理一下。

注意,加密算法和加密过程有很多种,以下内容仅是本人项目中采用的方案。

加密算法

加密算法采用AESRSA

  • AES是对称加密方法,加密方和解密方需要同时知道密钥是什么。
  • RSA是非对称加密算法,RSA通常会先生成一个公钥和一个私钥;公钥不值钱,可以随便给人;私钥要保管好,不能随便泄漏。

加密过程

这里先不说实际的方案,先来简单推演一下过程。

假设我们现在只使用AES算法,是否可以满足需求呢?前后端使用相同的密钥,请求时加密,后端接到数据时解密。貌似也是可以的。但是实际上如果这样实现,跟不加密区别不大。为什么呢?主要的问题是前端的代码是要写在javascript里边的。浏览器直接查看源代码,密钥直接就会被看到,这样的加密形同虚设。

我们再改进一下。
为了不让AES的密钥出现在代码里,我们可以每次发送请求时,新生成一个随机的密钥,这样就不用担心被人看到了。但是另外一个问题也来了,前端每次请求都生成一个随机的密钥,后端怎么知道呢?答案是,请求时把密钥一起送过去。当然了,这个密钥不能明目张胆的送,得再包装一下。
怎么包装呢?这就需要用到RSA加密算法了。RSA的特点是,用公钥加密后的内容,只能用私钥进行解密。公钥相当于一个锁,私钥相当于钥匙。上边说的"公钥不值钱"就是这个原因,你拿了公钥也没有用,你只能加密要发送的数据,不能看接收到的数据。

好了,过程基本就是这样了:

  1. 前端生成AES随机密钥,加密要发送的数据;
  2. 用后端给的RSA的公钥对这个随机的AES私钥加密,请求时同时发送。
  3. 后端收到数据以后,先用RSA的私钥拿到AES的密钥
  4. 用AES密钥解密数据。

应答的时候,比这个过程就简单多了。因为现在前后端已经都知道AES的密钥了。后端用AES加密,前端解密就可以了。

实际上,以上过程还是不安全的,无法解决中间人攻击的问题。这个问题以后有时间再整理吧。

下一篇:前后端通信加密 2: 代码之前需要了解的内容

相关文章

  • 前后端通信加密 1:加密过程

    最近接手的一个项目中,要求前后端通信时,所有的信息都要加密传送。这里把加密的要点简单整理一下。 注意,加密算法和加...

  • HTTPS详解

    一、前言 1.通信的加密(报文传输通道的加密,即对称加密算法协商过程的加密) 2.内容的加密(报文主体的加密,即对...

  • HTTPS Knowledge

    HTTPS 一、加密 HTTPS的通信过程中只在握手阶段使用了非对称加密,后面的通信过程 均使用的是对称加密,尽管...

  • 深入HTTPS系列三(如何通信)

    继上篇深入HTTPS系列二(加密&证书)后,该篇主要讲HTTPS通信过程。 ** HTTPS的通信过程** 1、客...

  • HTTPS加密机制以及数字证书

    HTTP 的缺点 1. 通信使用明文(不加密),内容可能会被窃听 通信的加密 一种方式是将通信加密。HTTP 协议...

  • iOS安全概要-4-加密服务(Cryptographic Ser

    4 加密服务(Cryptographic Services) 加密服务构成传输过程(安全通信)和数据静止(安全存储...

  • HTTPS 学习

    https是加密的http协议,通过不对称加密确认对称加密的密钥,之后使用对称加密进行通信。通信流程: http ...

  • 哈希加密算法

    加密算法的分类 对称加密采用对称秘钥的加密系统,加密、解密过程均采用同一把秘钥,通信双方必须同时获得这把钥匙进行加...

  • 关于js sort排序诡异问题

    最近,正在做一个网站的重构,后端php,前端使用vue全家桶。前后端通信的过程中使用MD5进行加密。MD5有字...

  • iOS之DES加密

    项目是使用3DES算法,ECB分组加密模式。我们后端使用的加密过程:对明文进行十六进制编码,在使用3DES加密。i...

网友评论

    本文标题:前后端通信加密 1:加密过程

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