我在 python (tkinter) 中有一个用户界面,它使用 cryptography.fernet 来加密用户的密码并将其存储在 yaml 文件中。出于密码恢复的目的,我还将生成的加密 key 保留在 yaml 文件中。
我的问题是加密 key 在 yaml 文件中以 (!!binary) 前缀存储。当我想读回它以使用它来恢复密码时,yaml.load() 方法将 key 转换为我不想要的二进制格式。
这是credentials.yml文件的内容:
encryption_key: !!binary |
Rkl5ZVFTQnZhNG1LcVhsSU1LV3FUZzNETGVRcWx0VTQyMzFyRDJlTWR4UT0=
username: Jack
encrypted_password: gAAAAABlXhuUZimgsD1eN7gLZpfzvxKc4Bz9fIPmVhWvwGoKkaUiSWOSf7gkFJBM8XRU-kgn37kKH3KC2XTz-CHLVX2PFerckQ==
这是我的 python 代码:
import yaml
from cryptography.fernet import Fernet
with open("credentials.yml", 'r') as file:
yaml_data = yaml.load(file)
print(yaml_data['encryption_key'])
代码的输出为:b'FIyeQSBva4mKqXlIMKWqTg3DLeQqltU4231rD2eMdxQ='
但我想要这个:Rkl5ZVFTQnZhNG1LcVhsSU1LV3FUZzNETGVRcWx0VTQyMzFyRDJlTWR4UT0=
有什么方法可以将原始格式的加密 key 转储到 yaml 文件中吗?或者有什么方法可以将其转换回非二进制格式?
最佳答案
这只是 Base64
>>> b = b'FIyeQSBva4mKqXlIMKWqTg3DLeQqltU4231rD2eMdxQ='
>>> import base64
>>> base64.b64encode(b)
b'Rkl5ZVFTQnZhNG1LcVhsSU1LV3FUZzNETGVRcWx0VTQyMzFyRDJlTWR4UT0='
关于python - 如何从 yaml 文件中读取 cryptography.fernet 生成的加密 key 作为字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77542044/