RSA公钥密码加密解密 Python
时间: 2024-10-21 14:13:07 浏览: 14
python之RSA加密解密源码
RSA (Rivest-Shamir-Adleman) 公钥密码是一种非对称加密算法,由三位美国计算机科学家在1977年发明。它基于两个数学难题:大数分解和欧几里得逆元求解,其中一个是用于生成密钥对,另一个则是解密过程的关键。
在Python中,我们可以使用`cryptography`库来实现RSA的公钥加密和解密。以下是基本步骤:
1. **生成密钥对**:
```python
from cryptography.hazmat.primitives import serialization
from cryptography.hazmat.primitives.asymmetric import rsa
key = rsa.generate_private_key(
public_exponent=65537,
key_size=2048
)
private_key = key.private_bytes(
encoding=serialization.Encoding.PEM,
format=serialization.PrivateFormat.PKCS8,
encryption_algorithm=serialization.NoEncryption()
)
public_key = key.public_key().public_bytes(
encoding=serialization.Encoding.PEM,
format=serialization.PublicFormat.SubjectPublicKeyInfo
)
```
2. **加密消息**:
使用接收者的公钥进行加密:
```python
def encrypt(message, recipient_pubkey):
ciphertext = recipient_pubkey.encrypt(
message.encode(),
padding.OAEP(mgf=padding.MGF1(algorithm=hashes.SHA256()),
algorithm=hashes.SHA256(),
label=None)
)
return ciphertext
```
3. **解密密文**:
使用发送者的私钥进行解密:
```python
def decrypt(ciphertext, sender_privkey):
plaintext = sender_privkey.decrypt(
ciphertext,
padding.OAEP(mgf=padding.MGF1(algorithm=hashes.SHA256()),
algorithm=hashes.SHA256(),
label=None)
)
return plaintext.decode()
```
阅读全文