des对称加密算法实验代码,输入分别为10进制的“2,0,2,1,2,3,8,5,0,5,4”这11个数,密钥为2进制,输出要求密文为二进制,密钥为二进制
时间: 2023-10-06 07:06:41 浏览: 65
以下是使用DES对称加密算法实现输入为10进制的“2,0,2,1,2,3,8,5,0,5,4”这11个数,密钥为2进制的加密和解密过程,输出密文为二进制:
```python
from Crypto.Cipher import DES
import binascii
# 将10进制的明文转换为8字节的二进制数据
plaintext = b'20212385054'
plaintext = plaintext + b' ' * (8 - len(plaintext) % 8)
# 将2进制的密钥转换为8字节的二进制数据
key = b'10100110'
# 创建DES加密器
cipher = DES.new(key, DES.MODE_ECB)
# 加密明文
ciphertext = cipher.encrypt(plaintext)
# 将密文转换为二进制并输出
ciphertext = binascii.hexlify(ciphertext)
ciphertext = bin(int(ciphertext, 16))[2:]
# 创建DES解密器
cipher = DES.new(key, DES.MODE_ECB)
# 解密密文
decrypted = cipher.decrypt(binascii.unhexlify(hex(int(ciphertext, 2))[2:].zfill(16)))
# 输出解密后的明文
print("Plaintext: ", decrypted)
```
输出结果为:
```
Plaintext: b'20212385054 '
```
需要注意的是,在解密密文时,需要将密文先转换为16进制,再将其转换为二进制,并使用`zfill`函数填充前导0,使其长度为16。再将其解密后即可得到原始明文。
阅读全文