Dipende dal cryptosystem e dalla sua implementazione: non è garantito che il computer possa dire una decrittazione corretta da una errata.
Tuttavia, la maggior parte dei sistemi progettati per la crittografia statica dei dati (ad esempio, crittografia di file o posta elettronica, invece di crittografare temporaneamente i dati per trasferirli su una rete non sicura) includono un modo per rilevare quando un errore la chiave è stata data. Il meccanismo esatto varia, ma alcuni di quelli comunemente usati includono:
-
Controlla la chiave prima tentando la decrittografia, includendo un hash crittografico di come parte dei dati crittografati. (Per i messaggi crittografati usando crittografia a chiave pubblica , uno potrebbe semplicemente includere la chiave pubblica, o un hash di esso, nel messaggio crittografato.)
-
Controlla la chiave all'inizio della decrittografia, anteponendo un'intestazione nota ai dati di testo in chiaro: potrebbe essere semplice come un blocco di byte nulli e controllare che decrittografi correttamente.
-
Verifica la chiave e l'integrità dei dati includendo un codice di autenticazione dei messaggi nella crittografia dati (o utilizzando una modalità di crittografia autenticata ). Lo scopo principale di un MAC è proteggere i dati crittografati dalla manomissione, ma come effetto collaterale serve anche a rilevare le decifrazioni errate. Tuttavia, il MAC non può essere verificato senza aver prima letto ed elaborato tutti i dati, quindi, per motivi di usabilità, potrebbe comunque essere utile combinarlo con uno degli altri metodi di verifica delle chiavi sopra descritti.
In ogni caso, un formato di crittografia ben progettato permetterà all'utente di essere informato rapidamente, se provano a decodificarlo con la chiave sbagliata - ma non troppo rapidamente, in quanto ciò lo renderebbe semplicemente più facile da rompere la chiave con la forza bruta senza fare nulla per aiutare gli utenti legittimi. Il metodo consigliato per ottenere ciò, per la crittografia simmetrica con una chiave derivata da una passphrase, consiste nell'utilizzare una funzione di derivazione della chiave ( come PBKDF2 o scrypt ) con un parametro regolabile che controlla quanto lavoro è necessario per calcolare la chiave dalla passphrase. Questa chiave derivata (che dovrebbe essere abbastanza lunga - diciamo, 128 bit o più - per non essere intaccata dalla forza bruta) può quindi essere verificata con uno dei metodi descritti sopra.