![](/img/trans.png)
[英]fernet key error "Fernet key must be 32 url-safe base64-encoded bytes"
[英]Error: Fernet key must be 32 url-safe base64-encoded bytes. Whenever trying to run the program
这是我的代码,我正在尝试制作一个 Fernet 解码器,但是每当我尝试运行该程序时,我都会收到此错误:
ValueError: Fernet key must be 32 URL-safe base64-encoded bytes.
import dearpygui.dearpygui as dpg
from cryptography.fernet import Fernet
import base64
def GetCrypto():
Crypt = dpg.get_value("CG")
Pass = dpg.get_value("CP")
fernet = Fernet(Pass)
decMessage = fernet.decrypt(Crypt).decode('utf-8')
print(decMessage)
dpg.create_context()
dpg.create_viewport()
dpg.setup_dearpygui()
dpg.create_viewport(title='Custom Title', width=600, height=200)
with dpg.window(label="KEIKAS", width=600, height=250):
dpg.add_input_text(tag="CG", label="Cryptografy")
dpg.add_input_text(tag="CP", label="Cryptografy Password")
dpg.add_button(label="Decrypt", callback = GetCrypto)
dpg.show_viewport()
dpg.start_dearpygui()
dpg.destroy_context()
键:b'KnX5YN3hvP54jOIMkacWdqxFX1RKk8cjqVZjGJbAscM='
我不知道您在 GUI 中输入了什么值,但这对我有用:
也许您在错误的Input Text
中使用了错误的值。
或者,也许您忘记将string
编码为bytes
。
from cryptography.fernet import Fernet
Pass = b'KnX5YN3hvP54jOIMkacWdqxFX1RKk8cjqVZjGJbAscM='
#Pass = 'KnX5YN3hvP54jOIMkacWdqxFX1RKk8cjqVZjGJbAscM='.encode('utf-8')
fernet = Fernet(Pass)
text = "Hello World!"
Crypto = fernet.encrypt(text.encode('utf-8')).decode('utf-8')
print('Crypto:', Crypto)
decMessage = fernet.decrypt(Crypto.encode('utf-8')).decode('utf-8')
print('decMessage:', decMessage)
结果:
Crypto: gAAAAABjHPqIoajV-v1V7pginMhkwFBtJfZCLpJjmsT7AxHpc3guBX5otRqJWK5gCWxLh9Iy_9LhoQTzk3en2DDr_OwcWT276A==
decMessage: Hello World!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.