调用Python库,分别实现RSA-3072 和AES128的加密和解密
时间: 2023-06-17 21:06:36 浏览: 209
RSA-3072 加密和解密的实现可以使用 Python 中的 `cryptography` 库,而 AES128 加密和解密则可以使用 Python 中的 `pycryptodome` 库。
下面分别介绍如何使用这两个库实现加密和解密:
1. RSA-3072 加密和解密
```python
from cryptography.hazmat.primitives.asymmetric import rsa, padding
from cryptography.hazmat.primitives import serialization, hashes
# 生成 RSA 密钥对
private_key = rsa.generate_private_key(
public_exponent=65537,
key_size=3072,
)
public_key = private_key.public_key()
# 将密钥对序列化为 PEM 格式
private_key_pem = private_key.private_bytes(
encoding=serialization.Encoding.PEM,
format=serialization.PrivateFormat.PKCS8,
encryption_algorithm=serialization.NoEncryption()
)
public_key_pem = public_key.public_bytes(
encoding=serialization.Encoding.PEM,
format=serialization.PublicFormat.SubjectPublicKeyInfo
)
# 加密明文
message = b"Hello, World!"
ciphertext = public_key.encrypt(
message,
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
)
)
```
2. AES128 加密和解密
```python
from Crypto.Cipher import AES
from Crypto.Random import get_random_bytes
# 生成随机密钥
key = get_random_bytes(16)
# 加密明文
message = b"Hello, World!"
cipher = AES.new(key, AES.MODE_EAX)
ciphertext, tag = cipher.encrypt_and_digest(message)
# 解密密文
decipher = AES.new(key, AES.MODE_EAX, nonce=cipher.nonce)
plaintext = decipher.decrypt_and_verify(ciphertext, tag)
```
需要注意的是,这两个库的安装方式如下:
```
pip install cryptography
pip install pycryptodome
```
阅读全文