gpt4 book ai didi

python - 简单密码程序中的错误(cryptography.fernet.InvalidToken)

转载 作者:行者123 更新时间:2023-12-01 09:33:26 29 4
gpt4 key购买 nike

我正在用 Python 编写一个简单的密码程序(对于 Python 来说是新的,对于加密来说甚至是新的),其中用户帐户和密码被保存在字典中的文件中。我正在使用 Fernet 模块加密密码。添加用户工作正常,但是当我尝试解密密码时,我收到 cryptography.fernet.InvalidToken 错误,因此问题应该出在 key 上,尽管我看不到我的内容我在这里做错了。

代码片段:

def generate_master_key():
my_key_file = "/path/to/passwordfile"
if os.path.exists(my_key_file):
with open(my_key_file, 'rb') as myfile:
master_key = myfile.read()
else:
master_key = Fernet.generate_key()
with open(my_key_file, 'wb') as myfile:
myfile.write(master_key)
return master_key
del master_key


PASSWORDS = json.load(open('accounts'))
key = generate_master_key()
cipher_suite = Fernet(key)

def encrypt(s):
return cipher_suite.encrypt(base64.encodestring(bytes(s, encoding="ascii")))


def decrypt(token):
return cipher_suite.decrypt(base64.encodestring(bytes(token, encoding="ascii")))


def add_user():
print('What is the name of the account you would like to add?')
account = input()
print('What is the password of {}?'.format(account))
pw = getpass.getpass()
PASSWORDS[account] = encrypt(pw).decode('ascii')
json.dump(PASSWORDS, open('accounts', 'w'))


def get_password():
account = sys.argv[1]
if account in PASSWORDS:
pyperclip.copy(decrypt(PASSWORDS[account]))
print('Password for {} copied to clipboard'.format(account))
else:
print('There is no account named {}'.format(account))

最佳答案

如果我的理解是正确的,您将加密文本的编码值传递给解密方法,这不是要解密的有效 token 。

由于您将编码值传递给加密货币,因此解密应该如下所示:

def decrypt(token):
return base64.decode(cipher_suite.decrypt(token, encoding="ascii"))

关于python - 简单密码程序中的错误(cryptography.fernet.InvalidToken),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49754702/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com