欢迎访问宙启技术站
智能推送

Python中使用Key()加密和解密数据的方法有哪些

发布时间:2023-12-15 02:39:38

在Python中,可以使用多种方法对数据进行加密和解密。以下是一些常用的加密和解密方法,以及使用这些方法的示例。

1. 使用cryptography库进行对称加密和解密:

cryptography是一个功能强大的加密库,提供了丰富的加密算法和功能。其中,Fernet算法提供了对称加密和解密的方法。

from cryptography.fernet import Fernet

# 生成加密密钥
key = Fernet.generate_key()

# 创建Fernet对象
fernet = Fernet(key)

# 加密数据
data = b"Hello World"
encrypted_data = fernet.encrypt(data)

# 解密数据
decrypted_data = fernet.decrypt(encrypted_data)

print(decrypted_data)  # b"Hello World"

2. 使用RSA算法进行非对称加密和解密:

RSA算法是一种非对称加密算法,使用公钥进行加密,使用私钥进行解密。

from cryptography.hazmat.primitives.asymmetric import rsa
from cryptography.hazmat.primitives import serialization, hashes
from cryptography.hazmat.primitives.asymmetric import padding

# 生成RSA密钥对
private_key = rsa.generate_private_key(
    public_exponent=65537,
    key_size=2048,
)

# 将私钥序列化为PEM格式
private_key_pem = private_key.private_bytes(
    encoding=serialization.Encoding.PEM,
    format=serialization.PrivateFormat.PKCS8,
    encryption_algorithm=serialization.NoEncryption()
)

# 生成公钥
public_key = private_key.public_key()

# 将公钥序列化为PEM格式
public_key_pem = public_key.public_bytes(
    encoding=serialization.Encoding.PEM,
    format=serialization.PublicFormat.SubjectPublicKeyInfo
)

# 加密数据
data = b"Hello World"
encrypted_data = public_key.encrypt(
    data,
    padding.OAEP(
        mgf=padding.MGF1(algorithm=hashes.SHA256()),
        algorithm=hashes.SHA256(),
        label=None
    )
)

# 解密数据
decrypted_data = private_key.decrypt(
    encrypted_data,
    padding.OAEP(
        mgf=padding.MGF1(algorithm=hashes.SHA256()),
        algorithm=hashes.SHA256(),
        label=None
    )
)

print(decrypted_data)  # b"Hello World"

3. 使用hashlib进行哈希加密:

哈希加密是一种不可逆的加密方法,常用于存储密码的摘要。

import hashlib

# 加密数据
data = b"Hello World"
hashed_data = hashlib.sha256(data).hexdigest()

print(hashed_data)  # "2ef7bde608ce5404e97d5f042f95f89f1c232871"

总结:

Python提供了多种加密和解密数据的方法,包括对称加密、非对称加密和哈希加密。根据具体需求和安全性要求,选择适合的加密算法和方法进行数据加密和解密。