In questo tutorial esploreremo uno dei metodi di crittografia chiamato Caesar Cipher. Fa parte della crittografia.
introduzione
In questa tecnica, ogni carattere viene sostituito da una lettera in una certa posizione numerica fissa che si trova dopo o prima dell'alfabeto. Ad esempio: l'alfabeto B viene sostituito da due posizioni sotto la D. D diventerebbe F e così via. Questo metodo prende il nome dai famosi personaggi frizionali Giulio Cesare, che lo usavano per comunicare con i funzionari.
Esiste un algoritmo utilizzato per implementarlo. Capiamo quanto segue.
Funzionalità dell'algoritmo di cifratura di Cesare
Questo algoritmo è costituito da alcune funzionalità fornite di seguito.
- Questa tecnica è abbastanza semplice da applicare alla crittografia.
- Ogni testo viene sostituito dal numero fisso della posizione verso il basso o verso l'alto con l'alfabeto.
- È un tipo semplice di cifrario sostitutivo.
È richiesto un valore intero per definire ciascun ultimo testo che è stato spostato verso il basso. Questo valore intero è noto anche come spostamento.
jvm in Java
Possiamo rappresentare questo concetto utilizzando l'aritmetica modulare trasmutando prima la lettera in numeri, secondo lo schema A = 0, B = 1, C = 2, D = 3…….. Z = 25.
La seguente formula matematica può essere utilizzata per spostare n lettera.
Come decifrare?
La decrittazione è la stessa della crittografia. Possiamo creare una funzione che realizzerà lo spostamento nel percorso opposto per decrittografare il testo originale. Tuttavia, possiamo utilizzare la proprietà ciclica del codice sotto il modulo.
installazione della torcia
Cifra(n) = Decifra(26-n)
La stessa funzione può essere utilizzata per la decrittazione. Invece, modificheremo il valore di spostamento in modo tale che spostamenti = 26 - turno.
Comprendiamo il seguente esempio:
Esempio -
lancia int nella stringa java
def encypt_func(txt, s): result = '' # transverse the plain txt for i in range(len(txt)): char = txt[i] # encypt_func uppercase characters in plain txt if (char.isupper()): result += chr((ord(char) + s - 64) % 26 + 65) # encypt_func lowercase characters in plain txt else: result += chr((ord(char) + s - 96) % 26 + 97) return result # check the above function txt = 'CEASER CIPHER EXAMPLE' s = 4 print('Plain txt : ' + txt) print('Shift pattern : ' + str(s)) print('Cipher: ' + encypt_func(txt, s))
Produzione:
Plain txt : CEASER CIPHER EXAMPLE Shift pattern : 4 Cipher: HJFXJWsHNUMJWsJCFRUQJ
Il codice sopra ha attraversato il personaggio alla volta. Trasferisce ciascun carattere come da regola a seconda della procedura di crittografia e decrittografia del testo.
Abbiamo definito alcuni insiemi specifici di posizioni che hanno generato un testo cifrato.
Violazione dell'algoritmo di cifratura di Cesare
Possiamo hackerare il testo cifrato in vari modi. Uno dei modi è Tecnica della forza bruta, il che implica provare ogni possibile chiave di decrittazione. Questa tecnica non è così difficile e non richiede molto sforzo.
Comprendiamo il seguente esempio.
Esempio -
msg = 'rGMTLIVrHIQSGIEWIVGIEWIV' #encrypted msg LETTERS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' for k in range(len(LETTERS)): transformation = '' for s in msg: if s in LETTERS: n = LETTERS.find(s) n = n - k if n <0: n="n" + len(letters) transformation="transformation" letters[n] else: s print('hacking k #%s: %s' % (k, transformation)) < pre> <p> <strong>Output:</strong> </p> <pre> Hacking k #25: rHNUMJWrIJRTHJFXJWHJFXJW </pre> <h2>Transposition Cipher</h2> <p>Transposition cipher algorithm is a technique where the alphabet order in the plaintext is rearranged to form a cipher text. This algorithm doesn't support the actual plain text alphabets.</p> <p>Let's understand this algorithm using an example.</p> <p> <strong>Example -</strong> </p> <p>We will take the simple example called columnar transposition cipher where we write the each character in the pain text in horizontal with specified alphabet width. The vertically written texts are cipher, which create a completely unlike cipher text.</p> <p>Let's take a plain text, and apply the simple columnar transposition technique as shown below.</p> <img src="//techcodeview.com/img/python-tutorial/89/caesar-cipher-python-2.webp" alt="Caesar Cipher in Python"> <p>We placed the plain text horizontally and the cipher text is created with vertical format as: <strong>hotnejpt.lao.lvi.</strong> To decrypt this, the receiver must use the same table to decrypt the cipher text to plain text.</p> <p> <strong>Code -</strong> </p> <p>Let's understand the following example.</p> <pre> def split_len(sequence, length): return [sequence[i:i + length] for i in range(0, len(sequence), length)] def encode(k, plaintxt): order = { int(val): n for n, val in enumerate(k) } ciphertext = '' for index in sorted(order.ks()): for part in split_len(plaintxt, len(k)): try:ciphertext += part[order[index]] except IndexError: continue return ciphertext print(encode('3214', 'HELLO')) </pre> <p> <strong>Explanation -</strong> </p> <p>In the above code, we have created a function named <strong>split_len(),</strong> which spitted the pain text character, placed in columnar or row format.</p> <p>The <strong>encode()</strong> method created the cipher text with a key specifying the number of columns, and we have printed each cipher text by reading through each column.</p> <h4>Note - The transposition technique is meant to be a significant improvement in crypto security. Cryptanalyst observed that re-encrypting the cipher text using same transposition cipher shows better security.</h4> <hr></0:>
Cifrario di trasposizione
L'algoritmo di cifratura a trasposizione è una tecnica in cui l'ordine alfabetico nel testo in chiaro viene riorganizzato per formare un testo cifrato. Questo algoritmo non supporta gli attuali alfabeti di testo semplice.
rdbms
Comprendiamo questo algoritmo utilizzando un esempio.
Esempio -
Prenderemo il semplice esempio chiamato cifrario a trasposizione colonnare in cui scriviamo ciascun carattere nel testo del dolore in orizzontale con la larghezza dell'alfabeto specificata. I testi scritti verticalmente sono cifrati, che creano un testo cifrato completamente diverso.
Prendiamo un testo semplice e applichiamo la semplice tecnica di trasposizione colonnare come mostrato di seguito.
programma di incapsulamento
Abbiamo posizionato il testo normale orizzontalmente e il testo cifrato viene creato con formato verticale come: hotnejpt.lao.lvi. Per decrittografarlo, il destinatario deve utilizzare la stessa tabella per decrittografare il testo cifrato in testo normale.
Codice -
Comprendiamo il seguente esempio.
def split_len(sequence, length): return [sequence[i:i + length] for i in range(0, len(sequence), length)] def encode(k, plaintxt): order = { int(val): n for n, val in enumerate(k) } ciphertext = '' for index in sorted(order.ks()): for part in split_len(plaintxt, len(k)): try:ciphertext += part[order[index]] except IndexError: continue return ciphertext print(encode('3214', 'HELLO'))
Spiegazione -
Nel codice sopra, abbiamo creato una funzione denominata split_len(), che sputava il carattere del testo doloroso, posizionato in formato colonnare o riga.
IL codificare() Il metodo ha creato il testo cifrato con una chiave che specifica il numero di colonne e abbiamo stampato ogni testo cifrato leggendo ciascuna colonna.
Nota: la tecnica di trasposizione vuole essere un miglioramento significativo nella sicurezza crittografica. Il crittoanalista ha osservato che la ricrittografia del testo cifrato utilizzando lo stesso codice di trasposizione mostra una migliore sicurezza.
0:>