DES数据加密Python代码
时间: 2025-05-22 21:46:07 浏览: 26
### 使用Python实现DES数据加密
以下是基于PyCryptodome库的一个简单示例,用于展示如何使用Python实现DES加密。需要注意的是,在实际应用中应确保密钥长度符合标准(通常为8字节),并注意填充方式以满足分组大小的要求。
#### 安装依赖
首先需要安装 `pycryptodome` 库来支持DES加密操作:
```bash
pip install pycryptodome
```
#### 加密代码示例
以下是一个完整的DES加密和解密的代码示例:
```python
from Crypto.Cipher import DES
from Crypto.Util.Padding import pad, unpad
def des_encrypt(key, plaintext):
cipher = DES.new(key, DES.MODE_ECB) # 创建DES对象,采用ECB模式
padded_plaintext = pad(plaintext.encode(), DES.block_size) # 填充明文至块大小倍数
encrypted_data = cipher.encrypt(padded_plaintext) # 执行加密
return encrypted_data.hex() # 返回十六进制字符串形式的结果
def des_decrypt(key, ciphertext_hex):
cipher = DES.new(key, DES.MODE_ECB) # 创建DES对象,采用ECB模式
decrypted_padded_data = cipher.decrypt(bytes.fromhex(ciphertext_hex)) # 解密密文
decrypted_data = unpad(decrypted_padded_data, DES.block_size).decode() # 移除填充并转换回字符串
return decrypted_data
# 测试部分
key = b'12345678' # 密钥必须是8字节长
plaintext = 'HelloWorld'
encrypted_text = des_encrypt(key, plaintext)
print(f"Encrypted Text: {encrypted_text}")
decrypted_text = des_decrypt(key, encrypted_text)
print(f"Decrypted Text: {decrypted_text}")
```
此代码实现了基本的DES加密与解密功能[^1]。其中,`Crypto.Cipher.DES` 提供了核心的加密逻辑,而 `Crypto.Util.Padding.pad` 和 `unpad` 则负责处理输入数据使其适配固定的块大小需求。
如果尝试对不符合块大小的数据进行加密,则会抛出异常提示无效数据长度错误[^1]。
对于更复杂的场景如CBC模式或者自定义IV向量的情况可以参考其他资料进一步扩展[^2]。
阅读全文
相关推荐
















