在 Python 中,可以使用 cryptography
库来实现非对称加密。这里是一个简单的例子,展示了如何使用该库来实现非对称加密:
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()
# 序列化公钥
public_key_bytes = public_key.public_bytes(
encoding=serialization.Encoding.PEM,
format=serialization.PublicFormat.SubjectPublicKeyInfo
)
# 使用公钥加密数据
data = b"Hello, World!"
ciphertext = public_key.encrypt(
data,
padding.OAEP(
mgf=padding.MGF1(algorithm=hashes.SHA256()),
algorithm=hashes.SHA256(),
label=None
)
)
# 使用私钥解密数据
plaintext = private_key.decrypt(
ciphertext,
padding.OAEP(
mgf=padding.MGF1(algorithm=hashes.SHA256()),
algorithm=hashes.SHA256(),
label=None
)
)
print(plaintext) # 输出:b'Hello, World!'
在这个例子中,我们使用了 RSA 算法来生成密钥对,并使用公钥加密数据,使用私钥解密数据。需要注意的是,非对称加密的数据一般都要经过填充,这里我们使用了 OAEP 填充。
如果你想将这些代码封装成一个类,可以这样做:
```python class AsymmetricEncryption: def init(self): # 生成密钥对 self.private_key = rsa.generate_private_key( public_exponent=65537, key_size=2048 ) self.public_key = self.private_key