以这个在线工具为例: https://tool.oschina.net/encrypt
选择 AES ,明文输入 test content ,得到密文 U2FsdGVkX18rKzwlZ/7CleXiil1NCTu46Q9LkW7eh3s=
JS 中可以正常解密:
CryptoJS.AES.decrypt("U2FsdGVkX18rKzwlZ/7CleXiil1NCTu46Q9LkW7eh3s=", "12345").toString(CryptoJS.enc.Utf8)
'test content'
如下 py 实现可以做到互相加密解密,但是无法解密通过上面在线工具中获得的密文。
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad, unpad
key = '12345'
def encrypt(raw):
raw = pad(raw.encode(), 16)
cipher = AES.new(key.encode('utf-8'), AES.MODE_ECB)
return base64.b64encode(cipher.encrypt(raw))
def decrypt(enc):
enc = base64.b64decode(enc)
cipher = AES.new(key.encode('utf-8'), AES.MODE_ECB)
return unpad(cipher.decrypt(enc), 16)
上面在线工具没有让填写偏移量的地方,我就当作 ECB 模式,填充用 Pkcs7 来理解了,是我理解错了吗?
希望可以用 py 实现可以解密上面在线工具生成的密文。