Cifratura e decifratura AES
Cifra un messaggio con una password e decifralo in seguito, oppure lavora con chiavi e IV grezzi per testare il tuo codice. La cifratura avviene sul tuo dispositivo con la Web Crypto API.
Aggiungi questo calcolatore al tuo sito
Copia il codice e incollalo nell'HTML della tua pagina. È gratis; mantieni il link di credito, per favore.
Cosa fa la modalità password
La password viene trasformata in una chiave a 256 bit con PBKDF2-HMAC-SHA256 e 600.000 iterazioni (la raccomandazione OWASP), usando un salt casuale di 16 byte. Il testo viene cifrato con AES-256-GCM con un nonce casuale di 12 byte, e il risultato è salt + nonce + testo cifrato + tag di 16 byte, in Base64. Cifrando due volte lo stesso testo si ottengono risultati diversi, ed è normale.
Per decifrarlo altrove bastano poche righe, per esempio in Python con il pacchetto cryptography:
import base64
from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.primitives.ciphers.aead import AESGCM
from cryptography.hazmat.primitives.kdf.pbkdf2 import PBKDF2HMAC
data = base64.b64decode(testo_cifrato)
salt, nonce, corpo = data[:16], data[16:28], data[28:]
chiave = PBKDF2HMAC(hashes.SHA256(), 32, salt, 600_000).derive(password.encode())
print(AESGCM(chiave).decrypt(nonce, corpo, None).decode())AES in breve
AES (FIPS 197) è il cifrario a blocchi standardizzato dal NIST nel 2001. Cifra blocchi di 16 byte con una chiave a 128, 192 o 256 bit, e la modalità decide come vengono concatenati i blocchi: CBC richiede il padding e un IV casuale, CTR trasforma AES in un cifrario a flusso e GCM aggiunge un tag di autenticazione che rileva qualsiasi modifica al testo cifrato. Chi perde la password o la chiave perde i dati: non c'è modo di recuperarli.
Domande frequenti
Quale opzione scelgo?
Per i tuoi messaggi usa la modalità password predefinita (AES-256-GCM): è autenticata, quindi rileva una password sbagliata o un testo manomesso. Usa il formato OpenSSL/CryptoJS per scambiare dati con codice che usa CryptoJS.AES o openssl enc, e «Chiave e IV grezzi» per allinearti a un'implementazione specifica.
Si può decifrare qui un testo che inizia con U2FsdGVkX1?
Sì, se conosci la password. U2FsdGVkX1 è «Salted__» in Base64, l'intestazione scritta da CryptoJS e OpenSSL. Vengono provate automaticamente sia la vecchia derivazione della chiave con MD5 sia quella più recente con SHA-256.
Perché non c'è la modalità ECB?
I browser non la offrono perché non è sicura: blocchi di testo in chiaro identici producono blocchi cifrati identici, lasciando trapelare schemi ricorrenti. Usa CBC, CTR o, meglio ancora, GCM.
Quello che incollo viene inviato a un server?
No. Questo strumento funziona interamente nel tuo browser, con JavaScript e la Web Crypto API integrata. Niente di ciò che scrivi, incolli o apri viene caricato o salvato.