Python 常见加密操作的实现攻略
在现代互联网时代,信息安全显得越来越重要。在很多应用场景下,数据的加密是必不可少的。Python是一种广泛使用的高级编程语言,它提供了很多加密操作的库,本篇文章将要介绍Python常见加密操作的实现攻略。
常见加密操作
Python支持很多加密方式,其中部分被广泛应用在互联网安全领域,常见的加密操作有:
- 对称加密(Symmetric Encryption)
- 非对称加密(Asymmetric Encryption)
- 数字签名(Digital Signature)
- 散列函数(Hash Functions)
对称加密
在对称加密中,加密和解密使用相同的密钥(Key)。对称加密算法有DES、AES、RC4等。其中AES是常用的对称加密算法之一,支持多种密钥大小,并被广泛地使用在各种场合。Python内置的对称加密库是cryptography。
非对称加密
在非对称加密中,加密和解密使用不同的密钥。非对称加密算法有RSA、D-H、ECC等。其中RSA是常用的非对称加密算法之一,被广泛地应用于数字签名、密钥协商等场合。Python内置的非对称加密库是cryptography。
数字签名
数字签名通常用于确认消息或文档的来源和完整性。数字签名算法有RSA、DSA、ECDSA等。Python内置的数字签名库是cryptography。
散列函数
散列函数通常用于确定消息或文档的完整性。数字签名算法有MD5、SHA-1、SHA-256等。Python内置的散列函数库是hashlib。
示例说明
对称加密示例
下面是一个使用AES对称加密算法的示例程序:
import os
from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
from cryptography.hazmat.primitives import padding
# 设置加密密钥
key = os.urandom(32)
# 设置加密模式
iv = os.urandom(16)
cipher = Cipher(algorithms.AES(key), modes.CBC(iv))
# 进行加密操作
padder = padding.PKCS7(128).padder()
encryptor = cipher.encryptor()
plaintext = b"hello world"
padded_data = padder.update(plaintext) + padder.finalize()
ciphertext = encryptor.update(padded_data) + encryptor.finalize()
# 进行解密操作
decryptor = cipher.decryptor()
unpadded_data = decryptor.update(ciphertext) + decryptor.finalize()
unpadder = padding.PKCS7(128).unpadder()
original_data = unpadder.update(unpadded_data) + unpadder.finalize()
# 输出加解密结果
print("加密前数据:", plaintext)
print("加密后数据:", ciphertext)
print("解密后数据:", original_data)
在该示例中,首先随机生成了一个32字节的密钥和一个16字节的随机IV(用于CBC模式);然后使用AES算法和CBC模式创建了对称加密器/解密器;接着对明文进行PKCS7填充,进行加密操作,最后进行解密操作,输出加密前后、加密后解密后的数据,验证加解密结果。
非对称加密示例
下面是一个使用RSA非对称加密算法的示例程序:
from cryptography.hazmat.primitives.asymmetric import rsa, padding
from cryptography.hazmat.primitives import serialization
from cryptography.hazmat.backends import default_backend
# 生成RSA密钥对
key_pair = rsa.generate_private_key(
public_exponent=65537,
key_size=2048,
backend=default_backend()
)
# 私钥加密,公钥解密
message = b"hello world"
# 将私钥序列化为字节串,以便保存或传输
private_key_bytes = key_pair.private_bytes(
encoding=serialization.Encoding.PEM,
format=serialization.PrivateFormat.PKCS8,
encryption_algorithm=serialization.NoEncryption()
)
public_key = key_pair.public_key()
# 对明文进行加密操作
ciphertext = public_key.encrypt(
message,
padding.OAEP(
mgf=padding.MGF1(algorithm=hashes.SHA256()),
algorithm=hashes.SHA256(),
label=None
)
)
# 对密文进行解密操作
plaintext = key_pair.decrypt(
ciphertext,
padding.OAEP(
mgf=padding.MGF1(algorithm=hashes.SHA256()),
algorithm=hashes.SHA256(),
label=None
)
)
# 输出加解密结果
print("原始数据:", message)
print("加密后数据:", ciphertext)
print("解密后数据:", plaintext)
在该示例中,首先生成了一个RSA密钥对,然后使用公钥加密,私钥解密的方式进行加解密操作;接着通过对私钥进行序列化,将密钥保存或传输;最后输出加解密结果,验证操作的正确性。
总结
本篇文章介绍了Python常见加密操作的实现攻略,学习了Python中对称加密、非对称加密、数字签名、散列函数的使用,并提供了使用cryptography库进行加密操作的示例程序。我们希望读者能够通过这些示例代码,在日常工作和学习中,更好地理解和应用加密算法。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python 常见加密操作的实现 - Python技术站