In crittografia , un cifrario è una tecnica matematica per trasformare un messaggio in modo tale da renderlo illeggibile a chiunque non sia il suo pubblico previsto. Cifrario e crytography sono diventati una parte essenziale delle comunicazioni di rete . Mentre esistono molte forme di crittografia , tutti derivano da una storia di creazione di cifratura che risale all'antica Roma , e la creazione del primo cifrario monoalfabetica . Seguendo l'esempio del cifrario di Cesare , il programmatore può implementare un cifrario monoalfabetica in un linguaggio di programmazione , come Java . Sostituzioni monoalfabetica
crittografi si riferiscono a cifre che si applicano una sola trasformazione di un intero messaggio come " monoalfabetica . " Queste cifre di solito prendono un semplice algoritmo che esegue una trasformazione , e quindi applicare tale algoritmo per ogni carattere nel messaggio . La natura del algoritmo non ha molta importanza , tanto che rimane costante per tutta la crittografia del messaggio. Il più semplice funziona su un carattere alla volta , mentre altri potrebbero usare più personaggi per costruire il cifrario .
Cesare Cipher e Hill Cipher
Il più semplice cifrario monoalfabetica è il codice di Cesare , inventata da Giulio Cesare per nascondere i messaggi dai suoi nemici . Il cifrario di Cesare assegna semplicemente un valore numerico alle lettere, e poi decide un offset . Questo offset sposta il valore delle lettere , e quindi rimescola il messaggio . Se il lettore conosce l'offset , lei può semplicemente ripristinare i valori e leggere il messaggio originale . Il cifrario di Hill , invece , utilizza matrici di caratteri e valori per determinare la crittografia . Ad esempio , una chiave di valori di offset 2x2 Hill avrebbe preso due caratteri alla volta dalla matrice e spostare il loro valore .
Cesare Cipher in Java
il Cesare Cipher in Java consiste nel determinare un offset e quindi spostando il valore di ogni lettera di una stringa per quella offset. Il programmatore può creare un elenco di lettere di confrontare il messaggio originale contro la chiave di cifratura , quindi tradurre quel messaggio nel cifrario crittografia . Poi , la crittografia diventa una questione di semplice addizione :
class Cesare {
public static void main (String [] args ) {
messaggio String = " hghajdvudbu " ; String temp = " abcdefghijklmnopqrstuvwxyz " ; int offset = 3; tradurre String = new String ();
for (int i = 0; i < s.length (); i + + ) {
< p > String t = Character.toString ( message.charAt ( i)); int index = temp.indexOf ( t ) ; indice + = 26 % di offset ; String add = Character.toString ( temp.charAt ( index) ) ;
tradurre + = aggiungere ; System.out.println ( tradurre) ;
} } }
2x2 Hill Cipher in Java
< p > il cifrario utilizza una chiave matrice per moltiplicare valori nel testo al fine di creare il cifrario . In un caso semplice , una matrice 2x2 sarebbe utilizzato per creare una chiave di cifratura . Il programmatore avrebbe quindi bisogno di utilizzare due caratteri dal messaggio alla volta , al fine di calcolare correttamente il messae tradotto , come illustrato nel codice seguente :
messaggio String = " hghajdvudbu " ; String temp = " abcdefghijklmnopqrstuvwxyz " tradurre String = new String ( ) ;
int tasto [ ] [ ] = new int [ 2 ] [ 2 ] ;
tasto [ 0 ] [ 0 ] = 1 ; tasto [ ,"0 ] [ 1 ] = 2; tasto [1] [ 0 ] = 3; tasto [1] [ 1 ] = 4;
int letterone = 7; int lettertwo = 6;
int nletterone = ( letterone * tasto [ 0 ] [ 0 ] ) + ( letterone * tasto [ 0 ] [ 1 ] ) ; int nlettertwo = ( lettertwo * tasto [1] [ 0 ] ) + ( lettertwo tasto * [ 1 ] [ ,"1 ] ) ;
tradurre = Character.toString ( temp.charAt ( nletterone % 26) ) + Character.toString ( temp.charAt ( nlettertwo % 26) ) ;