python实现DES加解密
时间: 2023-07-11 21:19:47 浏览: 85
好的,下面是Python实现DES加解密的代码:
```python
from Crypto.Cipher import DES
from Crypto.Util.Padding import pad, unpad
import binascii
# 加密函数
def des_encrypt(key, text):
# 将密钥转换为字节类型
key = bytes.fromhex(key)
# 将明文转换为字节类型
text = bytes(text, encoding='utf8')
# 创建DES加密器
des = DES.new(key, DES.MODE_ECB)
# 对明文进行填充
padded_text = pad(text, DES.block_size)
# 加密
encrypted_text = des.encrypt(padded_text)
# 将加密后的结果转换为16进制字符串
encrypted_text_hex = binascii.hexlify(encrypted_text).decode('utf8')
return encrypted_text_hex
# 解密函数
def des_decrypt(key, text):
# 将密钥转换为字节类型
key = bytes.fromhex(key)
# 将密文转换为字节类型
text = bytes.fromhex(text)
# 创建DES解密器
des = DES.new(key, DES.MODE_ECB)
# 解密
decrypted_text = des.decrypt(text)
# 去除填充
unpadded_text = unpad(decrypted_text, DES.block_size)
# 将明文转换为字符串类型
unpadded_text_str = unpadded_text.decode('utf8')
return unpadded_text_str
# 测试
if __name__ == '__main__':
key = '133457799BBCDFF1' # 密钥,必须是8字节(64位)的16进制字符串
text = 'hello world' # 明文
encrypted_text = des_encrypt(key, text)
print('密文:', encrypted_text)
decrypted_text = des_decrypt(key, encrypted_text)
print('明文:', decrypted_text)
```
这段代码使用了`pycryptodome`库实现DES加解密,需要先使用`pip install pycryptodome`命令安装该库。在代码中,`des_encrypt`函数用于加密,`des_decrypt`函数用于解密。其中,`key`参数表示密钥,必须是8字节(64位)的16进制字符串;`text`参数表示明文,可以是任意字符串。加密过程中,首先将密钥和明文转换为字节类型,然后创建DES加密器,对明文进行填充,最后进行加密并将加密结果转换为16进制字符串。解密过程中,首先将密钥和密文转换为字节类型,然后创建DES解密器,进行解密,去除填充,最后将明文转换为字符串类型。
阅读全文