天天看點

aes加解密并附代碼

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
}
           

下面就是具體實作具體操作!!!

希望能夠一直進步,一直前行,各位加油!!!