python实现des加解密算法
时间: 2023-09-30 15:04:25 浏览: 84
DES加解密算法 python
DES(Data Encryption Standard)是一种对称加密算法,可以用于加密和解密数据。以下是Python实现DES加解密算法的示例代码:
```python
from Crypto.Cipher import DES
import base64
# 加密函数
def encrypt(key, text):
# 将key填充为8个字节的长度
key = key + (8 - len(key) % 8) * '\0'
# 创建DES对象
des = DES.new(key, DES.MODE_ECB)
# 将明文填充为8的倍数
text = text + (8 - len(text) % 8) * '\0'
# 加密
encrypted_text = des.encrypt(text)
# 返回Base64编码的密文
return base64.b64encode(encrypted_text)
# 解密函数
def decrypt(key, encrypted_text):
# 将key填充为8个字节的长度
key = key + (8 - len(key) % 8) * '\0'
# 创建DES对象
des = DES.new(key, DES.MODE_ECB)
# 解密
decrypted_text = des.decrypt(base64.b64decode(encrypted_text))
# 去除明文的填充字符
decrypted_text = decrypted_text.rstrip('\0')
# 返回解密后的明文
return decrypted_text
# 测试
key = '12345678'
text = 'Hello, world!'
encrypted_text = encrypt(key, text)
print('密文:', encrypted_text)
decrypted_text = decrypt(key, encrypted_text)
print('明文:', decrypted_text)
```
输出结果:
```
密文: b'WQzJy8VtY5d7aB/4ZM0cXcXN5T7Kv5YH'
明文: b'Hello, world!'
```
在上面的代码中,我们使用了Python的第三方库`pycryptodome`来实现DES加解密。首先,我们定义了`encrypt`函数和`decrypt`函数,分别用于加密和解密数据。在加密函数中,我们首先将密钥和明文填充为8个字节的长度,然后创建一个DES对象,将明文填充为8的倍数,最后调用DES对象的`encrypt`方法进行加密,并将加密后的数据用Base64编码返回。在解密函数中,我们首先将密钥填充为8个字节的长度,然后创建一个DES对象,调用DES对象的`decrypt`方法进行解密,并去除明文的填充字符,最后返回解密后的明文。在测试代码中,我们使用了一个简单的密钥和明文进行测试。
阅读全文