es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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

Tags:  , ,

Answer

  1. Avatar for 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.

Comments are closed.