Uno degli esempi più significativi di crittografia a chiave simmetrica dell'età classica fu senza dubbio il cifrario di Cesare.
Come funziona codesto codice?
Si tratta di un cifrario a sostituzione monoalfabetica: Ogni lettera di una parola viene sostituita con un'altra in base ad una chiave.
Si dice che Cesare usasse come chiave K=3
Esempio:
Parola in chiaro: Luca
Parola cifrata: OAFD
Stabilito che la chiave è 3, la lettera L va sostituita con la lettera O, la lettera U con la lettera A, la lettera C va sostituita con la G e la lettera A con la lettera D. Chiave 3 significa che bisogna contare tre posti in avanti nell'alfabeto (italiano, nell'esempio), a partire dalla lettera data, che va esclusa dal computo.
Ho creato uno script in bash, semplice semplice, che cifra e decifra in base al cifrario di Cesare.
#!/bin/bash
#Cifrario di Cesare
#bit3lux@gmail.com
cifrare() {
#chiave=3
#Alfabeto di 26 lettere, senza spazi.
clear
alfabeto=$(echo {a..z} | sed 's/ //g')
k3="DEFGHIJKLMNOPQRSTUVWXYZABC"
read -p "digita il testo da cifrare: " testo
echo $testo | tr "[:upper:]" "[:lower:]" | tr "$alfabeto" "$k3"
}
decifrare() {
clear
alfabeto=$(echo {a..z} | sed 's/ //g')
k3="DEFGHIJKLMNOPQRSTUVWXYZABC"
read -p "digita il testo da decifrare: " testo
echo $testo | tr "[:lower:]" "[:upper:]" | tr "$k3" "$alfabeto"
}
clear
echo "Per cifrare digita 0, per decifrare digita 1."
echo
read scelta
if [ $scelta == 0 ]
then
cifrare
echo
elif [ $scelta == 1 ]
then
decifrare
echo
else
clear && echo "Opzione non valida, per scegliere digita 0 o 1"
echo
fi
exit 0
Cifrare |
Decifrare |
Nessun commento:
Posta un commento