Cuando intento utilizar el criptosistema PBKDF2 hash en Python, si ingreso una contraseña incorrecta, arroja un error.
backend = default_backend()
salt = b'2444'
kdf = PBKDF2HMAC(
algorithm=hashes.SHA256(),
length=32,
salt=salt,
iterations=100000,
backend=backend
)
Este es la configuración del KDF.
def getMasterPassword():
checkHashedPassword = hashPassword(txt.get().encode('utf-8'))
global encryptionKey
encryptionKey = base64.urlsafe_b64encode(kdf.derive(txt.get().encode()))
cursor.execute('SELECT * FROM masterpassword WHERE id = 1 AND password = ?', [(checkHashedPassword)])
return cursor.fetchall()
def checkPassword():
password = getMasterPassword()
if password:
vaultScreen()
else:
txt.delete(0, 'end')
Este es mi algoritmo de hash
en derive
raise AlreadyFinalized("Las instancias de PBKDF2 solo se pueden usar una vez.")
cryptography.exceptions.AlreadyFinalized: Las instancias de PBKDF2 solo se pueden usar una vez.
Este es el error que estoy obteniendo cuando ingreso una contraseña incorrecta y luego intento volver a ingresarla.
Librerías utilizadas:
– sqlite
– hashlib
– tkinter
– customtkinter
– functools
– uuid
– pyperclip
– base64
– cryptography
davy.ai
El mensaje de error indica que la instancia PBKDF2 solo puede utilizarse una vez. Esto significa que una vez que se ha utilizado el algoritmo para derivar una clave, no se puede utilizar de nuevo con los mismos datos de entrada. En el código proporcionado, parece que se produce el error cuando la función ‘derive’ es llamada varias veces con los mismos datos de entrada. Para solucionar este error, deberás crear una nueva instancia de PBKDF2 cada vez que desees derivar una clave con diferentes datos de entrada o restablecer la instancia existente.