前端开发数据传输加密方式之:AES加密

AES 加密

//块儿加密 块长度 128
//对称加密,每次迭代全加密(DES半加密)
//明文X轴,密文Y轴,加密迭代次数维数

攻击模式

  1. PA: Padding attack //(填充攻击)
  2. CPA: Chosen Plaintext Attack //选择明文攻击
  3. CCA: chosen-ciphertext attack //选择密文攻击

模式 mode

ECB 模式 ( Electronic Code Book mode) 电子密码本模式

最简单的模式

  1. 弱点:相同的明文加密的算法和密钥相同,高风险模式;容易受PA(Padding attack)攻击
  2. 特点:加密解密独立不依赖,可同时进行了,明文被分割成多个块儿进行加密,最后一个块的长度不够需填充到128

CBC 模式(Cipher block chaining mode) 密码块链接模式

  1. 特点:通过初始化向量实现 IV 与被加密的块相同的长度 IV 通常是一个随机数。在解密时,从两个邻接的密文块中即可得到一个明文块。因此,解密过程可以被并行化,而解密时,密文中一位的改变只会导致其对应的明文块完全改变和下一个明文块中对应位发生改变,不会影响到其它明文的内容。
  2. 过程:将上一个加密的结果作为下一个加密的自由域 xor,加密同一段明文会得到不同的密文

加密过程是互相依赖的,不支持并行 解决方式

  1. 方案一:每次请求的加密都新生成一个AES 对象,这个方式降低了CBC模式的安全性,但比ECB模式还是更安全的。
  2. 方案二:可以请求的加密都新生成一个AES 对象,先对一段已知明文进行加密,然后将加密结果作为对提交的数据进行加密的IV,不会影响安全度。

padding

AES 是块加密,每个块有固定的长度 128,如果被加密对象长度不够,需要有padding 填充字符来拼凑128。

常用库

CryptoJs

ECB 模式

 CryptoJS.AES.encrypt(word, key, {
   mode : CryptoJS.mode.ECB,
   padding : CryptoJS.pad.Pkcs7
 });

CBC 模式

 CryptoJS.AES.encrypt(word, key, {
   mode : CryptoJS.mode.CBC,
   padding : CryptoJS.pad.Pkcs7,
   IV:'bvnnk123zkxvfkdmvk' //自定义
 });

常用加密封装ECB模式

前端开发数据传输加密方式之:AES加密

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值