python非对称加密
时间: 2023-10-15 19:25:40 浏览: 100
Python中的非对称加密可以使用cryptography库来实现。首先,你需要安装cryptography库。可以使用以下命令进行安装:
```
pip install cryptography
```
下面是一个使用RSA算法进行非对称加密和解密的示例代码:
```python
from cryptography.hazmat.primitives import serialization, hashes
from cryptography.hazmat.primitives.asymmetric import rsa, padding
# 生成RSA公钥和私钥
private_key = rsa.generate_private_key(
public_exponent=65537,
key_size=2048
)
public_key = private_key.public_key()
# 将公钥和私钥保存到文件
pem_private_key = private_key.private_bytes(
encoding=serialization.Encoding.PEM,
format=serialization.PrivateFormat.PKCS8,
encryption_algorithm=serialization.NoEncryption()
)
pem_public_key = public_key.public_bytes(
encoding=serialization.Encoding.PEM,
format=serialization.PublicFormat.SubjectPublicKeyInfo
)
with open('private_key.pem', 'wb') as f:
f.write(pem_private_key)
with open('public_key.pem', 'wb') as f:
f.write(pem_public_key)
# 加载公钥和私钥
with open('private_key.pem', 'rb') as f:
private_key = serialization.load_pem_private_key(
f.read(),
password=None
)
with open('public_key.pem', 'rb') as f:
public_key = serialization.load_pem_public_key(
f.read()
)
# 加密数据
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!'
```
在这个示例中,我们使用RSA算法生成了公钥和私钥,并将它们保存到了文件中。然后,我们加载公钥和私钥,使用公钥加密数据,再使用私钥解密数据。
需要注意的是,非对称加密通常用于加密较小的数据,比如密钥或者数字签名。对于大的数据,通常会使用对称加密算法来加密数据,然后使用非对称加密算法来加密对称加密算法中使用的密钥。
这只是一个简单的示例,实际应用中还需要考虑安全性和其他因素。请根据具体需求仔细选择合适的加密算法和参数。
阅读全文