Python 解码文件的密码学不起作用,出现两个错误块
Python Cryptography decoding a file does not work and comes up with two blocks of errors
每次我尝试解密保存在文件中的密码并将其与输入的字符串(在解密和更改数据类型之后)进行比较时,都会出现解密错误。我尝试了很多代码和其他东西的组合,但它仍然会出现这个错误。我不知道该怎么办了,我真的需要一些帮助。
主要代码:
def login():
from cryptography.fernet import Fernet
file = open('key.key', 'rb')
key = file.read()
file.close()
loginask = input('What is your username?')
transf_loginask = 'login_list.' + str(loginask)
if path.exists(loginask) == True:
found = input('ACCOUNT FOUND! PLEASE INPUT PASSWORD:\n')
file = open(loginask, 'rb+')
pawo = file.readline()
pawo = str(pawo, 'utf-8')
pawo = bytes(pawo, 'utf-8')
f = Fernet(key)
pawo = f.decrypt(pawo)
pawo = str(pawo, 'utf-8')
if pawo == found:
print('ACCESS GRANTED.')
menu()
else:
print('ERROR, WRONG PASSWORD.')
login()
else:
print('ACCOUNT NOT FOUND. PLEASE CHECK FOR SPELLING MISTAKES OR CREATE ONE.')
login()
加密后的密码(只有最上面的是密码):
gAAAAABf52Z3OUR8eVc1fePwp73clVr5OZtw83q5iyK_lxu7Z5lQTbj2wE_dH1XuesMGrj5TBtQoRpe5Ulu9GXPScIs6SmVFjQ==
100
1953131
999999
999999
999999
999999
999999
关键:
DEfjraDq_DJbMx-s9uXDPOk8umKYgRzNgQ9eu-OpQ3w=
错误:
Traceback (most recent call last):
File "/opt/virtualenvs/python3/lib/python3.8/site-packages/cryptography/fernet.py", line 113, in _verify_signature
h.verify(data[-32:])
File "/opt/virtualenvs/python3/lib/python3.8/site-packages/cryptography/hazmat/primitives/hmac.py", line 70, in verify
ctx.verify(signature)
File "/opt/virtualenvs/python3/lib/python3.8/site-packages/cryptography/hazmat/backends/openssl/hmac.py", line 76, in verify
raise InvalidSignature("Signature did not match digest.")
cryptography.exceptions.InvalidSignature: Signature did not match digest.
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "main.py", line 47, in <module>
login()
File "main.py", line 32, in login
pawo = f.decrypt(pawo)
File "/opt/virtualenvs/python3/lib/python3.8/site-packages/cryptography/fernet.py", line 76, in decrypt
return self._decrypt_data(data, timestamp, ttl, int(time.time()))
File "/opt/virtualenvs/python3/lib/python3.8/site-packages/cryptography/fernet.py", line 125, in _decrypt_data
self._verify_signature(data)
File "/opt/virtualenvs/python3/lib/python3.8/site-packages/cryptography/fernet.py", line 115, in _verify_signature
raise InvalidToken
cryptography.fernet.InvalidToken
当您用于加密密码的密钥与用于解密的密钥不同时,就会出现该错误。
每次我尝试解密保存在文件中的密码并将其与输入的字符串(在解密和更改数据类型之后)进行比较时,都会出现解密错误。我尝试了很多代码和其他东西的组合,但它仍然会出现这个错误。我不知道该怎么办了,我真的需要一些帮助。
主要代码:
def login():
from cryptography.fernet import Fernet
file = open('key.key', 'rb')
key = file.read()
file.close()
loginask = input('What is your username?')
transf_loginask = 'login_list.' + str(loginask)
if path.exists(loginask) == True:
found = input('ACCOUNT FOUND! PLEASE INPUT PASSWORD:\n')
file = open(loginask, 'rb+')
pawo = file.readline()
pawo = str(pawo, 'utf-8')
pawo = bytes(pawo, 'utf-8')
f = Fernet(key)
pawo = f.decrypt(pawo)
pawo = str(pawo, 'utf-8')
if pawo == found:
print('ACCESS GRANTED.')
menu()
else:
print('ERROR, WRONG PASSWORD.')
login()
else:
print('ACCOUNT NOT FOUND. PLEASE CHECK FOR SPELLING MISTAKES OR CREATE ONE.')
login()
加密后的密码(只有最上面的是密码):
gAAAAABf52Z3OUR8eVc1fePwp73clVr5OZtw83q5iyK_lxu7Z5lQTbj2wE_dH1XuesMGrj5TBtQoRpe5Ulu9GXPScIs6SmVFjQ==
100
1953131
999999
999999
999999
999999
999999
关键:
DEfjraDq_DJbMx-s9uXDPOk8umKYgRzNgQ9eu-OpQ3w=
错误:
Traceback (most recent call last):
File "/opt/virtualenvs/python3/lib/python3.8/site-packages/cryptography/fernet.py", line 113, in _verify_signature
h.verify(data[-32:])
File "/opt/virtualenvs/python3/lib/python3.8/site-packages/cryptography/hazmat/primitives/hmac.py", line 70, in verify
ctx.verify(signature)
File "/opt/virtualenvs/python3/lib/python3.8/site-packages/cryptography/hazmat/backends/openssl/hmac.py", line 76, in verify
raise InvalidSignature("Signature did not match digest.")
cryptography.exceptions.InvalidSignature: Signature did not match digest.
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "main.py", line 47, in <module>
login()
File "main.py", line 32, in login
pawo = f.decrypt(pawo)
File "/opt/virtualenvs/python3/lib/python3.8/site-packages/cryptography/fernet.py", line 76, in decrypt
return self._decrypt_data(data, timestamp, ttl, int(time.time()))
File "/opt/virtualenvs/python3/lib/python3.8/site-packages/cryptography/fernet.py", line 125, in _decrypt_data
self._verify_signature(data)
File "/opt/virtualenvs/python3/lib/python3.8/site-packages/cryptography/fernet.py", line 115, in _verify_signature
raise InvalidToken
cryptography.fernet.InvalidToken
当您用于加密密码的密钥与用于解密的密钥不同时,就会出现该错误。