mercoledì 14 gennaio 2015

Il Codice di Cesare [Brevi Esercizi]

Salve!

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
Alla prossima!

Nessun commento:

Posta un commento