python AES加密/解密器使用PyCrypto
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python AES加密/解密器使用PyCrypto相关的知识,希望对你有一定的参考价值。
import random
import string
from base64 import b64decode, b64encode
from Crypto.Cipher import AES
BLOCK_SIZE = 128 // 8
def pkcs7_pad(s):
pad_len = BLOCK_SIZE - (len(s) % BLOCK_SIZE)
return s + (pad_len * chr(pad_len))
def pkcs7_unpad(s):
pad_len = ord(s[-1])
return s[:-pad_len]
class Aes128Cipher(object):
def __init__(self, clip_key):
self.key = clip_key[:32]
self.iv = clip_key[:16]
@property
def aes(self):
"""매번 새로운 AES 객체를 만들어야 한다"""
return AES.new(self.key, AES.MODE_CBC, self.iv)
def encrypt(self, s):
return b64encode(self.aes.encrypt(pkcs7_pad(s))).decode()
def decrypt(self, s):
return pkcs7_unpad(self.aes.decrypt(b64decode(s)).decode())
def test():
aes = Aes128Cipher('oe123ry7f8iqdsghfbhjaslfjfuyrbeg')
random_str = ''.join(random.choice(string.ascii_letters + string.digits) for _ in range(123))
assert aes.encrypt('110236') == 'xjB4l+Zb3v88x2OTV+FEmA=='
assert aes.decrypt(aes.encrypt(random_str)) == random_str
print('All Test Passed')
if __name__ == '__main__':
test()
以上是关于python AES加密/解密器使用PyCrypto的主要内容,如果未能解决你的问题,请参考以下文章
python实现aes加密解密
python实现AES加密解密
python中的AES加密与解密
python-aes(ECB)加解密-支持16/32位
python AES双向对称加密解密
python3 AES加密解密