前端加密算法之AES-CBC
一、简介
CBC模式的AES加密相比较于ECB模式,多了一个偏移量,所以安全性要比ECB模式高
二、实现(核心加密js)
和前篇ECB模式一样这里都是直接采用调用js的方式实现了加密;
当然纯python方式加密也是可以的,则需要 安装pycryptodome 模块
pycryptodome :一个强大的加密算法库,和crypto,pycrypto类似,但是后者貌似已经没人维护了
直接安装:pip install pycryptodome
function get_result(password, lol){
var pwd = CryptoJS.AES.encrypt(CryptoJS.enc.Utf8.parse(password), CryptoJS.enc.Utf8.parse(lol),{
iv: CryptoJS.enc.Utf8.parse(lol),
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
}).toString();
return encodeURIComponent(pwd);
}
python方式(引用待验证-我在项目中尚未验证可行性,后面有机会我得再看看):
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad
from Crypto.Random import get_random_bytes
# 要加密的内容
data = b"123456"
# 随机生成16字节(即128位)的加密密钥
key = get_random_bytes(16)
# 实例化加密套件,使用CBC模式
cipher = AES.new(key, AES.MODE_CBC)
# 对内容进行加密,pad函数用于分组和填充
encrypted_data = cipher.encrypt(pad(data, AES.block_size))
# 将加密内容写入文件
file_out = open("encrypted.bin", "wb")
# 在文件中依次写入key、iv和密文encrypted_data
[file_out.write(x) for x in (key, cipher.iv, encrypted_data)]
三、调用
见前端加密算法之ECB-AES