JS加密,python解密

`// 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())
`

posted @   三土三水  阅读(223)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示