在CentOS系统中,Python提供了多种库来进行数据的加密与解密。以下是一些常用的库和示例代码:
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()}")
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进行数据的加密与解密。根据具体需求选择合适的库和加密算法。