`// js AES加密
var CryptoJs = require("crypto-js")
// 密钥(128位, 16字节)
var key = CryptoJs.enc.Utf8.parse("1234567890abcdef");
// 直接打印为words数组,可用如下方法进行还原
// console.log(CryptoJs.enc.Utf8.stringify(key))
// 初始化向量(128位, 16字节)
var iv = CryptoJs.enc.Utf8.parse("0123456789abcdef");
// 待加密的数据
let data = "hello yuan";
// 进行AES-128加密, 使用CBC模式和PKCS7填充
var encrypted = CryptoJs.AES.encrypt(data, key, {
iv: iv,
mode: CryptoJs.mode.CBC,
padding: CryptoJs.pad.Pkcs7
})
// 获取加密后的密文(进行了base64编码)
var ciphertext = encrypted.toString()
console.log(ciphertext)
`
`# python解密
import base64
python AES解码
import Crypto.Cipher.AES
from Crypto.Cipher import AES
from Crypto.Util.Padding import unpad
base64加密数据
base64_data = "ynWnMy8HSF97P18WnYRquA=="
对base64数据进行解码
cipher_data = base64.b64decode(base64_data)
print(cipher_data)
16字节的key,iv
key = "1234567890abcdef".encode()
iv = "0123456789abcdef".encode()
创建aes对象
aes = AES.new(key=key, mode=AES.MODE_CBC, iv=iv)
解密数据
padded_data = aes.decrypt(cipher_data)
print(padded_data)
去掉填充 默认style: Optional[str]='pkcs7'
data = unpad(padded_data, block_size=16)
print(data)
将字节数据转换为字符串数据
print(data.decode())
`