我正在尝试使用 python 脚本加密我的环境文件中的合理值。我正在使用 Fernet。我只想加密那些尚未加密的值,确保没有任何多级加密。
在这种情况下,我如何知道某个值已经加密或解密?
我正在尝试使用 python 脚本加密我的环境文件中的合理值。我正在使用 Fernet。我只想加密那些尚未加密的值,确保没有任何多级加密。
在这种情况下,我如何知道某个值已经加密或解密?
只需尝试使用无 TTL(默认值)进行解密。如果它成功了,那么你就不需要再做任何事情了。如果失败,将引发 InvalidToken 异常,您可以捕获该异常。在 except 块中,您可以加密文件,如下例所示:
import base64
from pathlib import Path
from cryptography.fernet import Fernet, InvalidToken
key = Fernet.generate_key()
f = Fernet(key)
encrypted = f.encrypt(b'Hello world')
p1, p2 = Path('file1'), Path('file2')
p1.write_bytes(encrypted)
p2.write_bytes(base64.urlsafe_b64encode(b'\x80not encrypted'))
for example in (p1, p2):
try:
data = example.read_bytes()
f.decrypt(data, None)
except InvalidToken:
example.write_bytes(f.encrypt(data))