import base64
from Crypto.Cipher import DES
class DESCrypt:
def __init__(self, key, mode, iv):
self.key = key # 密钥
self.mode = mode # 模式
self.iv = iv # 初始化向量
def encrpyt(self, text):
'''加密'''
num = DES.block_size - len(text) % DES.block_size # 需要填充的字符个数
text_pad = (text + num * chr(num)).encode('utf-8') # 填充后的字节串
crpytor = DES.new(self.key, self.mode, self.iv)
encrypt_data = crpytor.encrypt(text_pad) # 对数据进行加密
return base64.b64encode(encrypt_data).decode()
def decrypt(self, text):
'''解密'''
data = base64.b64decode(text.encode())
crpytor = DES.new(self.key, self.mode, self.iv)
decrypt_data = crpytor.decrypt(data) # 对数据进行解密
res = decrypt_data[:-decrypt_data[-1]].decode() # 去除多余字符
return res
if __name__ == '__main__':
# key = random._urandom(8) 可以利用random模块随机生成
# key = b'C\xc5\xa0\x04!\xe3\xd59' # 密钥,固定8个字节长度
key = b'sync_key' # 密钥,固定8个字节长度
mode = DES.MODE_CBC
iv = b'\x9a\xf8\xad\xeb.\xb7B\xe1' # 初始化向量,固定8个字节长度
des = DESCrypt(key, mode, iv)
text = input('请输入需要DES加密的数据:')
en_data = des.encrpyt(text)
print('%s 经过加密得到:%s' % (text, en_data))
de_data = des.decrypt(en_data)
print('%s 经过解密得到:%s' % (en_data, de_data))
标签:DES,加密,python,text,self,des,iv,key,data
From: https://www.cnblogs.com/hanfe1/p/16666668.html