从crt证书文件得到公钥_NO3.openssl生成证书,测试证书的公钥加密私钥解密
时间: 2024-02-01 11:15:20 浏览: 98
首先,需要使用 OpenSSL 工具生成一个证书文件,包括公钥和私钥:
```
openssl req -x509 -newkey rsa:2048 -keyout example.key -out example.crt -days 365
```
这个命令将生成一个 2048 位 RSA 密钥对,并将其用于创建自签名的 X.509 证书,有效期为一年。生成的私钥将保存在 `example.key` 文件中,证书将保存在 `example.crt` 文件中。
接下来,我们可以使用 OpenSSL 的命令行工具来提取证书文件中的公钥:
```
openssl x509 -in example.crt -pubkey -noout > example.pub
```
这个命令将从 `example.crt` 中提取公钥,并将其保存到 `example.pub` 文件中。
现在,我们可以使用 Python 的 Cryptography 模块来加密数据。以下是一个示例脚本:
```python
from cryptography.hazmat.primitives.asymmetric import rsa, padding
from cryptography.hazmat.primitives import serialization
# 读取公钥
with open('example.pub', 'rb') as f:
pubkey_bytes = f.read()
pubkey = serialization.load_pem_public_key(pubkey_bytes)
# 加密数据
message = b'Hello, world!'
ciphertext = pubkey.encrypt(message, padding.OAEP(mgf=padding.MGF1(algorithm=hashes.SHA256()), algorithm=hashes.SHA256(), label=None))
# 打印密文
print(ciphertext)
```
这个脚本从 `example.pub` 中读取公钥,并使用 OAEP 填充方案加密了一条消息。密文将打印到控制台上。
最后,我们可以使用 OpenSSL 的命令行工具来解密数据:
```
openssl rsautl -decrypt -inkey example.key -in ciphertext.bin
```
这个命令将使用 `example.key` 中的私钥来解密 `ciphertext.bin` 文件中的数据。请注意,`ciphertext.bin` 文件中的数据必须是二进制格式的密文,而不是 Base64 编码的字符串。
如果解密成功,您应该会看到原始的明文消息,即 `Hello, world!`。
阅读全文