用PYTHON 写一个类,实现非对称加密
时间: 2023-01-12 19:13:06 浏览: 206
在 Python 中,可以使用 `cryptography` 库来实现非对称加密。这里是一个简单的例子,展示了如何使用该库来实现非对称加密:
```python
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
阅读全文