用python写DES加密算法
时间: 2023-09-30 07:03:42 浏览: 95
下面是用 Python 实现 DES 加密算法的示例代码:
```python
from Crypto.Cipher import DES
# 定义加密函数
def des_encrypt(key, data):
cipher = DES.new(key, DES.MODE_ECB) # 创建DES对象
data = data + (8 - (len(data) % 8)) * chr(8 - (len(data) % 8)) # 填充明文
encrypted_data = cipher.encrypt(data.encode()) # 加密
return encrypted_data.hex() # 返回十六进制字符串
# 定义解密函数
def des_decrypt(key, data):
cipher = DES.new(key, DES.MODE_ECB) # 创建DES对象
decrypted_data = cipher.decrypt(bytes.fromhex(data)).decode() # 解密
decrypted_data = decrypted_data[:-ord(decrypted_data[-1])] # 去除填充
return decrypted_data
# 测试
key = b"12345678" # 密钥
data = "Hello, DES!" # 明文
encrypted_data = des_encrypt(key, data)
decrypted_data = des_decrypt(key, encrypted_data)
print("明文: ", data)
print("密文: ", encrypted_data)
print("解密后的明文: ", decrypted_data)
```
在代码中,我们使用了 PyCryptodome 库中的 `DES` 模块来实现加解密操作。首先是定义了 `des_encrypt` 和 `des_decrypt` 两个函数,分别用于加密和解密数据。在加密函数中,我们首先根据密钥和数据创建了一个 `DES` 对象,然后对数据进行了填充,并将填充后的数据转换成字节串,调用 `encrypt` 方法进行加密,并将加密后的结果转换成十六进制字符串返回。在解密函数中,我们也是先创建了一个 `DES` 对象,然后将十六进制字符串转换成字节串,调用 `decrypt` 方法进行解密,并去除填充后返回解密后的明文。
最后,在测试代码中,我们定义了一个密钥和明文,并分别调用加密和解密函数进行测试,输出加密后的密文和解密后的明文。
阅读全文