建议食用原文链接效果更佳
今天我们将探讨在 Python 中常见的加密解密算法,并通过代码案例来帮助大家更好地理解它们的实现。
在开始之前,请确保您已经安装了 pycryptodome 这个库。您可以使用以下命令进行安装:
pip install pycryptodome
1. DES 加密算法
DES(Data Encryption Standard)是一种对称加密算法,其密钥长度为 56 位。以下是一个简单的 Python 实现:
from Crypto.Cipher import DES
from Crypto.Util.Padding import pad, unpad
import base64
# 要加密的文本
text = "Hello, world!"
# 使用 DES-ECB 模式加密
cipher = DES.new('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890', DES.MODE_ECB)
cipher_text = base64.b64encode(cipher.encrypt(pad(text.encode(), DES.block_size)))
print("DES 加密结果:", cipher_text.decode('utf-8'))
# 使用 DES-ECB 模式解密
plain_text = unpad(cipher.decrypt(base64.b64decode(cipher_text)), DES.block_size)
print("DES 解密结果:", plain_text.decode('utf-8'))
2. 3DES 加密算法
3DES(Triple Data Encryption Standard)是一种对称加密算法,它是 DES 的增强版。以下是一个简单的 Python 实现:
from Crypto.Cipher import DES3
from Crypto.Util.Padding import pad, unpad
import base64
# 要加密的文本
text = "Hello, world!"
# 使用 3DES-ECB 模式加密
cipher = DES3.new('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890', DES3.MODE_ECB)
cipher_text = base64.b64encode(cipher.encrypt(pad(text.encode(), DES3.block_size)))
print("3DES 加密结果:", cipher_text.decode('utf-8'))
# 使用 3DES-ECB 模式解密
plain_text = unpad(cipher.decrypt(base64.b64decode(cipher_text)), DES3.block_size)
print("3DES 解密结果:", plain_text.decode('utf-8'))
3. SHA-256 加密算法
SHA-256(Secure Hash Algorithm 256)是一种哈希算法,它不属于加密算法,但是它可以对数据进行摘要,生成一个固定长度的摘要值,通常用于数据完整性验证和数字签名等场景。以下是一个简单的 Python 实现:
import hashlib
# 要加密的文本
text = "Hello, world!"
# 使用 SHA-256 进行加密
hash_object = hashlib.sha256(text.encode())
hash_hex = hash_object.hexdigest()
print("SHA-256 加密结果:", hash_hex)
4. RSA 加密算法(非对称加密)
RSA(Rivest-Shamir-Adleman)是一种非对称加密算法,它需要一对密钥,分别为公钥和私钥。以下是一个简单的 Python 实现:
from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_OAEP
from Crypto.Random import get_random_bytes
import base64
# 生成 RSA 密钥对
key = RSA.generate(2048)
# 获取私钥和公钥
private_key = key.export_key()
public_key = key.publickey().export_key()
# 要加密的文本
text = "Hello, world!"
#使用 RSA 公钥加密
cipher = PKCS1_OAEP.new(public_key)
cipher_text = base64.b64encode(cipher.encrypt(pad(text.encode(), AES.block_size)))
print("RSA 加密结果(公钥):", cipher_text.decode('utf-8'))
#使用 RSA 私钥解密
plain_text = unpad(cipher.decrypt(base64.b64decode(cipher_text)), AES.block_size)
print("RSA 解密结果(私钥):", plain_text.decode('utf-8'))
5. AES 加密算法
AES(Advanced Encryption Standard)是一种对称加密算法,它是目前广泛应用的加密标准之一。以下是一个简单的 Python 实现:
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad, unpad
import base64
# 要加密的文本
text = "Hello, world!"
# 使用 AES-CBC 模式加密
cipher = AES.new('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890', AES.MODE_CBC)
cipher_text = base64.b64encode(cipher.encrypt(pad(text.encode(), AES.block_size)))
print("AES 加密结果(CBC 模式):", cipher_text.decode('utf-8'))
# 使用 AES-CBC 模式解密
plain_text = unpad(cipher.decrypt(base64.b64decode(cipher_text)), AES.block_size)
print("AES 解密结果(CBC 模式):", plain_text.decode('utf-8'))
以上就是关于 Python 常见加密解密算法的解析及代码案例。
加密和解密算法在实际应用中扮演着重要的角色,掌握这些算法对于程序员和初学者来说是非常有益的。
希望这篇文章能对您有所帮助。