关于前端:前端利用cryptojs进行AES加密

写在后面

最近理解了一下加密算法,在此特作以下总结,便于日后查阅,如果有问题的中央心愿大家能够指出,在此转发认为博主的文章对对称加密和AES加密有粗浅清晰的解说–对称加密及AES加密算法)

什么是AES加密

AES加密的利用场景,AES加密可逆转加密,前后端专用一个秘钥来加密解密

装置

npm install crypto-js --save-dev

引入

import CryptoJS from "crypto-js";

应用

// 加密
function encrypt(word, keyStr, ivStr) {
  keyStr = keyStr ? keyStr : "12345678";
  ivStr = ivStr ? ivStr : "123456789";
  let key = CryptoJS.enc.Utf8.parse(keyStr);
  //console.log(key);
  let iv = CryptoJS.enc.Utf8.parse(ivStr);
  let src = CryptoJS.enc.Utf8.parse(word);
  let encrypted = CryptoJS.AES.encrypt(src, key, {
    iv,
    mode: CryptoJS.mode.CBC,
    padding: CryptoJS.pad.ZeroPadding
  });
  // console.log(CryptoJS.enc.Base64.stringify(encrypted.ciphertext),encrypted.toString());
  return encrypted.toString();
}
// 解密
function decrypt(word, keyStr, ivStr){
  keyStr = keyStr ? keyStr : "12345678";
  ivStr = ivStr ? ivStr : "123456789";
  var key = CryptoJS.enc.Utf8.parse(keyStr);
  let iv = CryptoJS.enc.Utf8.parse(ivStr);
  let base64 = CryptoJS.enc.Base64.parse(word);
  let src = CryptoJS.enc.Base64.stringify(base64);
  var decrypt = CryptoJS.AES.decrypt(src, key, {
    iv,
    mode: CryptoJS.mode.CBC,
    padding: CryptoJS.pad.ZeroPadding
  });
  // console.log(decrypt.toString(CryptoJS.enc.Utf8),(decrypt.toString(CryptoJS.enc.Utf8)).toString());
  return decrypt.toString(CryptoJS.enc.Utf8);
}
console.log(encrypt('这是要加密的数据'));
console.log(decrypt(encrypt('这是要加密的数据')));

介绍

  • ASE加密是对称加密,即应用同一个密钥进行加密解密,
  • 须要留神的是前后端须要规定一样的mode和状态,能够参考对称加密及AES加密算法的第5点"理论开发中应用AES加密须要留神的中央"

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理