Non sono sicuro di aver capito bene la tua domanda.
Solitamente si pensa ad un algoritmo e poi si genera una chiave che rispetti i requisiti imposti dall'algoritmo stesso. Immagino che tu lo stia facendo così tanto per fare, giusto per trovare un riscontro a quello che leggi in giro, quindi ti do qualche comando con cui puoi giochicchiare. Useremo
OpenSSL (libreria famosissima).
AES è l'attuale standard per la cifratura simmetrica, viene usato pressoché ovunque. Funziona in 3 diverse modalità e adesso ti faccio vedere come usarlo per cifrare blocchi di 128 bit con una chiave di 128 bit. Come ben saprai 128 bit sono 16 bytes, quindi 16 caratteri ASCII.
Codice:
Chiave random (128bit) in hex
21625eed4cd20848fe89450b830700ba
Testo da cifrare
Ciao da inforge!
(nota che sono esattamente 16 caratteri -> 16 bytes -> 128 bit -> 1 blocco di AES)
Comando
echo -n 'Ciao da inforge!' | openssl aes-128-ecb -K 21625eed4cd20848fe89450b830700ba -nopad > secret.enc
Crittotesto (contenuto nel file secret.enc) espresso in formato esadecimale
8c58 e8f0 5a85 66ff 9463 52f0 52b0 34f1
(nota che sono sempre 16 bytes -> 128 bit -> 1 blocco di AES)
Il cifrario che stiamo usando è specificato da
aes-128-ecb, ovvero AES con chiave di 128 bit in modalità ECB. La modalità ECB (Electronic CodeBlock), che puoi usare anche con qualsiasi altro crittosistema simmetrico a blocchi, significa: cifra blocco per blocco nel modo più naturale che ti viene in mente (Il blocco n-esimo del ciphertext è la funzione di encription applicata al blocco n-esimo del plaintext). Con
-nopad stiamo dicendo di non usare un padding.
Ho scelto queste caratteristiche perché sono le più banali possibili: non stiamo facendo altro che applicare AES ai nostri blocchi, niente di più.
Con questo sistema possiamo cifrare un plaintext che è multiplo di 128 bit (ovvero il cui numero di caratteri è multiplo di 16) utilizzando una chiave generata da noi. E con questo decifriamo quello che abbiamo ottenuto:
Codice:
Comando
cat secret.enc | openssl enc -aes-128-ecb -d -K 21625eed4cd20848fe89450b830700ba -nopad
Output
Ciao da inforge!
Se vuoi provare ad implementare qualcosa di tuo senza usare OpenSSL, parti dai cifrari storici che sono più semplici.
PS.
Usare AES in questo modo non è sicuro, la roba che ti ho scritta è solo a scopo didattico. Molto probabilmente anche il modo in cui stai generando la chiave è insicuro. Se devi cifrare qualcosa di serio usa roba già pronta (OpenSSL va bene, ma lo devi usare in modo opportuno) e non reinventare la ruota.
PPS.
I comandi che ho usato li puoi provare con una qualsiasi distribuzione Linux, è tutta roba che di norma è già preinstallata (forse giusto openssl è da installare). Su Windows devi modificare un paio di cosette, ma è molto molto simile.