from Crypto.Cipher import AES
import base64
class aescrypt():
def __init__(self,key,model,iv,encode_):
self.encode_ = encode_
self.model = {'ECB':AES.MODE_ECB,'CBC':AES.MODE_CBC}[model]
self.key = self.add_32(key)
self.iv=self.add_16(iv)
#这里的密钥长度必须是16、24或32,目前16位的就够用了
def add_16(self,par):
par = par.encode(self.encode_)
while len(par) % 16 != 0:
par += b'\x00'
return par
def add_32(self,par):
par = par.encode(self.encode_)
while len(par) % 32 != 0:
par += b'\x00'
return par
def aesencrypt(self,text):
text = self.add_16(text)
if self.model == AES.MODE_ECB:
aes = AES.new(self.key,self.model) #创建一个aes对象
elif self.model == AES.MODE_CBC:
aes = AES.new(self.key,self.model,self.iv) #创建一个aes对象
self.encrypt_text = aes.encrypt(text)
return base64.encodebytes(self.encrypt_text).decode().strip()
def aesdecrypt(self,text):
text = base64.decodebytes(text.encode(self.encode_))
if self.model == AES.MODE_ECB:
aes = AES.new(self.key,self.model) #创建一个aes对象
elif self.model == AES.MODE_CBC:
aes = AES.new(self.key,self.model,self.iv) #创建一个aes对象
self.decrypt_text = aes.decrypt(text)
return self.decrypt_text.decode(self.encode_).strip('\0')
python加密的文件代码块,可跨文件调用
最新推荐文章于 2023-06-26 22:08:44 发布