CentOS Python如何进行数据加密与解密
导读:在CentOS系统中,Python提供了多种库来进行数据的加密与解密。以下是一些常用的库和示例代码: 1. 使用cryptography库 cryptography是一个功能强大的加密库,支持对称加密和非对称加密。 安装cryptograp...
在CentOS系统中,Python提供了多种库来进行数据的加密与解密。以下是一些常用的库和示例代码:
1. 使用cryptography库
cryptography是一个功能强大的加密库,支持对称加密和非对称加密。
安装cryptography库
pip install cryptography
对称加密示例
from cryptography.fernet import Fernet
# 生成密钥
key = Fernet.generate_key()
print(f"Generated key: {
key.decode()}
")
# 创建Fernet对象
cipher_suite = Fernet(key)
# 加密数据
data = b"Hello, World!"
encrypted_data = cipher_suite.encrypt(data)
print(f"Encrypted data: {
encrypted_data}
")
# 解密数据
decrypted_data = cipher_suite.decrypt(encrypted_data)
print(f"Decrypted data: {
decrypted_data.decode()}
")
非对称加密示例
from cryptography.hazmat.primitives.asymmetric import rsa, padding
from cryptography.hazmat.primitives import serialization, hashes
# 生成密钥对
private_key = rsa.generate_private_key(
public_exponent=65537,
key_size=2048,
)
public_key = private_key.public_key()
# 序列化密钥
private_pem = private_key.private_bytes(
encoding=serialization.Encoding.PEM,
format=serialization.PrivateFormat.PKCS8,
encryption_algorithm=serialization.NoEncryption()
)
public_pem = public_key.public_bytes(
encoding=serialization.Encoding.PEM,
format=serialization.PublicFormat.SubjectPublicKeyInfo
)
print(f"Private key:\n{
private_pem.decode()}
")
print(f"Public key:\n{
public_pem.decode()}
")
# 加密数据
data = b"Hello, World!"
encrypted_data = public_key.encrypt(
data,
padding.OAEP(
mgf=padding.MGF1(algorithm=hashes.SHA256()),
algorithm=hashes.SHA256(),
label=None
)
)
print(f"Encrypted data: {
encrypted_data}
")
# 解密数据
decrypted_data = private_key.decrypt(
encrypted_data,
padding.OAEP(
mgf=padding.MGF1(algorithm=hashes.SHA256()),
algorithm=hashes.SHA256(),
label=None
)
)
print(f"Decrypted data: {
decrypted_data.decode()}
")
2. 使用PyCryptoDome库
PyCryptoDome是另一个流行的加密库,提供了丰富的加密算法。
安装PyCryptoDome库
pip install pycryptodome
对称加密示例
from Crypto.Cipher import AES
from Crypto.Random import get_random_bytes
from Crypto.Util.Padding import pad, unpad
# 生成密钥
key = get_random_bytes(16)
# 创建AES对象
cipher = AES.new(key, AES.MODE_CBC)
# 加密数据
data = b"Hello, World!"
padded_data = pad(data, AES.block_size)
encrypted_data = cipher.encrypt(padded_data)
print(f"Encrypted data: {
encrypted_data}
")
# 解密数据
decipher = AES.new(key, AES.MODE_CBC, cipher.iv)
decrypted_padded_data = decipher.decrypt(encrypted_data)
decrypted_data = unpad(decrypted_padded_data, AES.block_size)
print(f"Decrypted data: {
decrypted_data.decode()}
")
非对称加密示例
from Crypto.PublicKey import RSA
from Crypto.Random import get_random_bytes
from Crypto.Cipher import PKCS1_OAEP
# 生成密钥对
key = RSA.generate(2048)
private_key = key.export_key()
public_key = key.publickey().export_key()
print(f"Private key:\n{
private_key.decode()}
")
print(f"Public key:\n{
public_key.decode()}
")
# 加载公钥
recipient_key = RSA.import_key(public_key)
# 加密数据
data = b"Hello, World!"
cipher_rsa = PKCS1_OAEP.new(recipient_key)
encrypted_data = cipher_rsa.encrypt(data)
print(f"Encrypted data: {
encrypted_data}
")
# 解密数据
cipher_rsa = PKCS1_OAEP.new(RSA.import_key(private_key))
decrypted_data = cipher_rsa.decrypt(encrypted_data)
print(f"Decrypted data: {
decrypted_data.decode()}
")
这些示例展示了如何在CentOS系统中使用Python进行数据的加密与解密。根据具体需求选择合适的库和加密算法。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: CentOS Python如何进行数据加密与解密
本文地址: https://pptw.com/jishu/737111.html
