However, now I am trying to use "Type in the encryption key when you
start up" and to save it in a session cookie (encrypted) but I do not
know how to tell the user if his key is correct or not.
C'è qualche ragione per cui stai memorizzando questo lato client? Il cookie verrà inviato con ogni richiesta, e la crittografia qui sembra sbagliata perché avrai bisogno di memorizzare la chiave per questa ulteriore crittografia da qualche parte. Chiunque catturi questo cookie avrebbe effettivamente la password di decrittazione indefinitamente (la password originale crittografata diventa effettivamente la password). Potrebbe essere memorizzato sul lato server, la password sarebbe meno esposta?
Ad ogni modo, quello era un punto a parte, ora passiamo alla tua domanda principale ... Se puoi memorizzare password lato server, puoi usare bcrypt e quindi confrontare la password inserita con la versione hash sulla voce della password.
Come ulteriore, assicurati di utilizzare un algoritmo di allungamento per convertire le password più deboli inserite dall'utente in chiavi forti tramite hashing lento iterativo. La forza di bit delle password degli utenti di solito non è sufficiente per proteggere da un attacco di forza bruta dei dati crittografati. Usa PBKDF2.