JS实现AES

简介

对称加密算法

AES(Advanced Encryption Standard)是一种对称密钥加密算法,用于加密和解密数据。它是目前广泛应用的加密标准之一,取代了原先的DES算法。AES支持128位、192位和256位的密钥长度,提供了更高的安全性。

AES算法将明文按照固定长度(128位)分组,并通过一系列的置换、替换和移位操作来加密数据。加密过程包括轮密钥加操作、字节替代、行移位和列混淆等步骤,这些步骤重复多轮(10轮、12轮或14轮,取决于密钥长度),最终得到加密后的密文。

解密过程与加密过程相反,通过使用相同的密钥和相反顺序的操作来将密文解密为明文。

JS实现

关键参数:密钥 key,偏移量 iv

//首先要引入 https://github.com/sytelus/CryptoJS 中的两个文件
<script src="./rollups/aes.js"></script>
<script src="./components/pad-zeropadding.js"></script>//这个文件不是固定的,需要根据不同的填充方式而更改
<script>
function encryptByAES(data, key, iv){
    var key  = CryptoJS.enc.Latin1.parse(key);
    var iv   = CryptoJS.enc.Latin1.parse(iv);
    var encrypted = CryptoJS.AES.encrypt(data,key,{iv:iv,mode:CryptoJS.mode.CBC,padding:CryptoJS.pad.ZeroPadding});
    return encrypted.ciphertext.toString();
}
function decryptByAES(data, key, iv){
    var key  = CryptoJS.enc.Latin1.parse(key);
    var iv   = CryptoJS.enc.Latin1.parse(iv);
    var decrypted = CryptoJS.AES.decrypt(data,key,{iv:iv,padding:CryptoJS.pad.ZeroPadding});
    return decrypted.ciphertext.toString();
}
</script>