Generatore Scrypt
Ricavate una chiave scrypt da una password con un salt casuale o personalizzato. Scegliete l'esponente di costo fino a 15 (N fino a 32768), la dimensione del blocco r fino a 8, il parallelismo p fino a 4 e una lunghezza della chiave da 16 a 64 byte. Lo strumento segue RFC 7914 e restituisce la chiave, il salt usato e i parametri in esadecimale o Base64, pronti per il confronto con Node.js crypto.scrypt, Python hashlib o libsodium. La password non viene restituita.
Domande frequenti
Che cos'è scrypt?
Scrypt è una funzione di derivazione delle chiavi ad alta intensità di memoria ideata da Colin Percival e standardizzata in RFC 7914. Ricava una chiave da una password e un salt, costringendo ogni tentativo a usare una grande quantità di memoria. Viene usata per memorizzare password, cifrare dischi e in alcune criptovalute.
Cosa significano N, r e p?
N è il costo in CPU e memoria e deve essere una potenza di due; r è la dimensione del blocco e p il fattore di parallelizzazione. La memoria usata è circa 128 volte N per r byte, quindi N = 16384 con r = 8 richiede 16 MiB. Qui N arriva fino a 32768, r fino a 8 e p fino a 4.
Quali sono i parametri predefiniti?
I valori predefiniti sono N = 16384 (esponente di costo 14), r = 8, p = 1 e una chiave di 32 byte: sono le impostazioni interattive consigliate nel documento su scrypt. Aumentate N per una protezione più forte, nei limiti consentiti dal vostro sistema.
Come viene scelto il salt?
Se il campo del salt è vuoto, lo strumento genera 16 byte casuali e li mostra nel risultato. Se inserite un salt, vengono usati i suoi byte UTF-8, così da poter riprodurre una chiave generata da un altro sistema. Non riutilizzate mai lo stesso salt per password diverse.
Posso riprodurre i vettori di test RFC 7914?
Sì. La password pleaseletmein con il salt SodiumChloride, esponente di costo 14, r = 8, p = 1 e una chiave di 64 byte produce 7023bdcb3afd7348461c06cd81fd38ebfda8fbba904f8e3ea9b543f6545da1f2d5432955613f0fcf62d49705242a9af9e61e85dc0d651e40dfcf017b45575887, il terzo vettore dell'RFC.
Perché i parametri hanno un limite?
Scrypt alloca memoria reale e viene eseguito su un server condiviso. Limitare N a 32768, r a 8 e p a 4 mantiene ogni derivazione al di sotto di circa 32 MiB di memoria e di uno o due secondi di elaborazione.
Come memorizzo un hash scrypt di una password?
Memorizzate insieme la chiave, il salt e N, r e p, perché vi serviranno tutti per verificare in seguito una password. Librerie come Node.js crypto.scrypt lasciano a voi la scelta del formato di memorizzazione, mentre altre usano formati stringa propri.
La mia password è inclusa nel risultato?
No. La risposta contiene la chiave, il salt e i parametri, ma mai la password. Non viene registrato né memorizzato nulla.
È meglio usare scrypt o Argon2?
Entrambi resistono agli attacchi basati sulla memoria e sono adatti per le password. Argon2id è la raccomandazione più recente ed è più facile da configurare, mentre scrypt è ampiamente supportato nelle librerie standard come Node.js e Python.
Cosa cambiano le opzioni esadecimale e Base64?
Cambiano il formato in cui vengono scritti la chiave e il salt nel risultato. I byte sono gli stessi, quindi scegliete il formato letto dal vostro codice.