给我看看Python加密解密模块之python-gnupg
时间: 2023-07-06 20:34:51 浏览: 240
好的,以下是一个简单的使用 python-gnupg 模块进行加密和解密的示例代码:
```python
import gnupg
# 创建一个 GPG 对象
gpg = gnupg.GPG()
# 导入公钥
with open('public_key.asc', 'rb') as f:
public_key = f.read()
import_result = gpg.import_keys(public_key)
print(import_result.results)
# 加密数据
data = b'Hello, world!'
encrypted_data = gpg.encrypt(data, import_result.fingerprints[0], always_trust=True)
print(encrypted_data.data)
# 解密数据
decrypted_data = gpg.decrypt(encrypted_data.data, passphrase='your_passphrase')
print(decrypted_data.data)
```
在上面的示例代码中,我们首先通过 `gnupg.GPG()` 创建了一个 GPG 对象。然后,我们通过读取公钥文件的方式导入了公钥,并使用 `gpg.import_keys()` 方法将公钥导入到 GPG 对象中。接着,我们使用 `gpg.encrypt()` 方法对数据进行加密,并将加密结果打印出来。最后,我们使用 `gpg.decrypt()` 方法对加密数据进行解密,并将解密结果打印出来。
需要注意的是,上述示例中的 `public_key.asc` 文件是一个 ASCII 编码的公钥文件,可以通过 `gpg --export --armor <key-id>` 命令导出。`--armor` 选项表示将输出结果转换为 ASCII 编码的文本格式。`<key-id>` 是要导出公钥的密钥 ID。
另外,需要在使用 `gpg.encrypt()` 方法时指定接收者的指纹(即密钥 ID),这里我们使用导入公钥时获取的第一个指纹。在使用 `gpg.decrypt()` 方法时,需要提供解密密码(即私钥密码)。
阅读全文