aes加解密并附代码

1 篇文章 0 订阅
1 篇文章 0 订阅

AES加解密技术栈:crypto-js
在实际开发项目当中,前后端为了代码安全进行加密处理,先整理下aes加密。

aes加密是基于数据块的加密方式,也就是说,每次处理的数据时一块(16字节),当数据不是16字节的倍数时填充,这就是所谓的分组密码(区别于基于比特位的流密码),16字节是分组长度

而aes加密又存在分组加密的几种模式:
ECB:是一种基础的加密方式,密文被分割成分组长度相等的块(不足补齐),然后单独一个个加密,一个个输出组成密文。

CBC:是一种循环模式,前一个分组的密文和当前分组的明文异或或操作后再加密,这样做的目的是增强破解难度。

CFB/OFB:实际上是一种反馈模式,目的也是增强破解的难度。

FCB和CBC的加密结果是不一样的,两者的模式不同,而且CBC会在第一个密码块运算时加入一个初始化向量。

实际加解密代码如下:(CBC方式使用)
npm安装操作如下:
1.安装crypto-js npm install crypto-js --save
2.导入 import CryptoJS from ‘crypto-js/crypto-js’
3.AES加解密代码如下,备注:重点要关注mode跟padding需跟解密方一致,比如,在混合式开发中,H5跟native要保持一致,亦要跟不同的后端语言保持一致
原生js引用:

//解密

function aesedn(word) {
    if(word == null){
        return
    }
    
let bytes  = CryptoJS.AES.decrypt(word, key, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 });
  
  let decryptedData = bytes.toString(CryptoJS.enc.Utf8);
    return decryptedData;
}

// 加密

function aesen(word) {

    if(word == null)
        return

    let srcs = CryptoJS.enc.Utf8.parse(word);

  
  let encrypted = CryptoJS.AES.encrypt(srcs, key, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 });
  
  console.log(encrypted.toString())
    return encrypted.toString();
}
const key = CryptoJS.enc.Utf8.parse('后端提供');
const iv = CryptoJS.enc.Utf8.parse('后端提供');

vue中封装

var CryptoJS = require("crypto-js");

//解密方法
function Decrypt(word) {
  var key = CryptoJS.enc.Utf8.parse("XXXXXXXXXXXX");
  var decrypt = CryptoJS.AES.decrypt(word, key, {
    mode: CryptoJS.mode.ECB,
    padding: CryptoJS.pad.Pkcs7
  });
  return CryptoJS.enc.Utf8.stringify(decrypt).toString();
}

//加密方法
function Encrypt(word) {
  var key = CryptoJS.enc.Utf8.parse("XXXXXXXXXXXX");
  var srcs = CryptoJS.enc.Utf8.parse(word);
  var encrypted = CryptoJS.AES.encrypt(srcs, key, {
    mode: CryptoJS.mode.ECB,
    padding: CryptoJS.pad.Pkcs7
  });
  return encrypted.toString();
}
export {
  Decrypt,
  Encrypt
}

下面就是具体实现具体操作!!!
希望能够一直进步,一直前行,各位加油!!!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值