java aes cbc加解密模式(前后端)

之前在做一个论坛项目的时候,安全性测试时候检测到前后端传输数据的时候使用了明文形式,于是去找了一个适用于前后端加解密的一种加密方式,aes加密的cbc模式,本人对加密的算法一窍不通,这里只是做一下怎么使用并不研究算法。

1.首先了解一下aes的几种加密模式
a.电码本模式(Electronic Codebook Book (ECB)
这种模式是将整个明文分成若干段相同的小段,然后对每一小段进行加密
b.密码分组链接模式(Cipher Block Chaining (CBC))
这种模式是先将明文切分成若干小段,然后每一小段与初始块或者上一段的密文段进行异或运算后,再与密钥进行加密。


java aes cbc加解密模式(前后端)_第1张图片
12232506-27faefa42fde42d28bef168b20736a61.png
  c.计算器模式(Counter (CTR))
            计算器模式不常见,在CTR模式中, 有一个自增的算子,这个算子用密钥加密之后的输出和明文异或的结果得到密文,相当于一次一密。这种加密方式简单快速,安全可靠,而且可以并行加密,但是在计算器不能维持很长的情况下,密钥只能使用一次
  d.密码反馈模式(Cipher FeedBack (CFB))
  e.输出反馈模式(Output FeedBack (OFB))(这里介绍aes的cbc模式)

2.首先列出测试项目的项目结构


java aes cbc加解密模式(前后端)_第2张图片
image.png

3.前端测试代码


java aes cbc加解密模式(前后端)_第3张图片
image.png
    ![image.png](https://upload-images.jianshu.io/upload_images/7489468-e4479b56fbcf33bb.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

这里需要到的一个加密crypto-js.js文件


java aes cbc加解密模式(前后端)_第4张图片
image.png

这里提一下 前后端使用的秘钥必须相同

4.服务端代码


java aes cbc加解密模式(前后端)_第5张图片
image.png

这里测试解密结果所以接收到参数后直接进行了打印

重点看下aes cbc加密模式的一个加解密工具类

java aes cbc加解密模式(前后端)_第6张图片
image.png

秘钥必须为16位

解密代码执行过程


java aes cbc加解密模式(前后端)_第7张图片
image.png
java aes cbc加解密模式(前后端)_第8张图片
image.png
java aes cbc加解密模式(前后端)_第9张图片
image.png
image.png

下面是一个加密


java aes cbc加解密模式(前后端)_第10张图片
image.png
java aes cbc加解密模式(前后端)_第11张图片
image.png
java aes cbc加解密模式(前后端)_第12张图片
image.png

代码基本已经贴出来了 下面看下运行过程

java aes cbc加解密模式(前后端)_第13张图片
image.png
java aes cbc加解密模式(前后端)_第14张图片
image.png

打印输出应该是写错了 这里应该是解密前, 还有一个这里看起来像base64加密,这里说明一下 这里是先aes加密后在base64的,所以不是简单的base64加密

java aes cbc加解密模式(前后端)_第15张图片
image.png
java aes cbc加解密模式(前后端)_第16张图片
image.png

解密成功了 这样就可以避免前后端使用明文数据进行裸奔。

你可能感兴趣的:(java aes cbc加解密模式(前后端))