Crittografia con cifratura affine utilizzando Python

Crittografia Con Cifratura Affine Utilizzando Python



Argomento dei contenuti:

  1. introduzione
  2. Conoscenza prerequisita
  3. Equazione di cifratura affine
  4. Crittografia con cifratura affine utilizzando Python
  5. Verifica teorica
  6. Conclusione
  7. Domande frequenti (FAQ)

La cifratura affine rappresenta un tipo specifico di cifratura a sostituzione, che rientra nella categoria delle cifre monoalfabetiche. A differenza del più famoso codice di Cesare, che sposta ciascuna lettera nel testo in chiaro di un numero fisso di tre posizioni, il codice Affine utilizza due chiavi (aeb). La scelta delle chiavi dovrebbe richiedere una considerazione speciale.

Conoscenza prerequisita

Per comprendere a fondo l’argomento di oggi, è necessario comprendere i seguenti concetti:







  • Il massimo comun divisore (MCD) e il numero coprimo
  • Aritmetica modulare

Questi concetti sono spiegati in dettaglio nel precedente articolo intitolato “Approccio matematico alla cifratura affine”.



Equazione di cifratura affine

Cominciamo con la formula per la crittografia con cifratura affine:



E(x) = (a.x + b) mod m
E(x) Denota una crittografia dell'indice alfabetico x
UN Un valore di indice della prima chiave 'speciale'.
X Un valore di indice della lettera semplice
B Un valore di indice della seconda chiave (valore di spostamento aggiuntivo)
mod m Le operazioni modulo dell'importo totale dell'alfabeto che è 26


Immagine alternativa e didascalia : Equazione di cifratura affine





Ad esempio, vogliamo crittografare il testo in chiaro “BIMANDO” con le chiavi 7 e 13. Utilizzando il seguente indice della tabella, convertiamo prima il testo in chiaro nel numero corrispondente:


Immagine alternativa e didascalia : Numerazione dell'indice



Il testo in chiaro “BIMANDO” viene convertito in un numero di indicizzazione in “1 8 12 0 13 3 14”.


Immagine alternativa e didascalia : Converti un testo in chiaro in un valore di numerazione dell'indice

Quindi, applichiamo il calcolo dell'equazione e il risultato viene mostrato come segue:


Immagine alternativa e didascalia : Cifratura affine

Pertanto, il testo in chiaro 'BIMANDO' viene crittografato utilizzando la crittografia affine con le chiavi 7 e 13 che risulta in 'URTNAIH'.

Crittografia con cifratura affine utilizzando Python

Ora, supponiamo di voler inviare un messaggio confidenziale che contenga una serie di paragrafi. Eseguire la crittografia con cifratura affine con il processo manuale richiede molto impegno e tempo e ha un'alta probabilità di errori di calcolo, giusto? Pertanto, abbiamo bisogno di un programma che automatizzi il processo di crittografia Affine Cipher. Quello che segue è il processo passo passo per creare un programma Python:

1. Importare le librerie richieste
Il nostro programma inizia importando i moduli necessari come argparse, string e os rispettivamente per l'analisi degli argomenti della riga di comando, le operazioni sulle stringhe e le funzionalità relative al sistema operativo.

importare argparse
importare corda
importare Voi

2. Definizione della mappatura dell'alfabeto
Quindi, definiamo l'alfabeto come una stringa di lettere inglesi minuscole. Viene utilizzato per mappare i caratteri durante il successivo processo di crittografia.

alfabeto = corda . ascii_lowercase

3. Funzione di crittografia della cifratura affine
Questa è la funzione principale del nostro programma. Prende il testo di input e due chiavi, 'a' e 'b', e applica la crittografia affine al testo, preservando la struttura del testo.

def affine_cipher_encryption ( testo , UN , B ) :
testo_crittografato = ''
per car In testo:
Se car. inferiore ( ) In alfabeto:
Se car. ècena ( ) :
testo_crittografato + = chr ( ( ( UN * ( parola ( car. inferiore ( ) ) - 97 ) + b ) % 26 ) + 65 )
altro :
testo_crittografato + = chr ( ( ( UN * ( parola ( car ) - 97 ) + b ) % 26 ) + 97 )
altro :

4. Controllo principale condizionale
In questo codice di blocco, controlla se viene eseguito come programma principale. Imposta il parser degli argomenti con le descrizioni dello script e dei suoi argomenti. L'argomento richiesto è solo il percorso dell'input di un file di testo. Quando non specifichiamo il percorso di output, vogliamo che venga impostato come predefinito il nome del file di input con '_encrypted' aggiunto. Per l'argomento 'chiavi', vogliamo che sia formattato in 'a,b'. Ma se lo impostiamo, il valore predefinito è 5 e 8.

Se __nome__ == '__principale__' :
parser = argparse. ArgumentParser ( descrizione = 'Crittografia con cifratura affine da un file di testo' )
parser . aggiungi_argomento ( 'file di input' , aiuto = 'Percorso del file di testo di input' )
parser . aggiungi_argomento ( '-K' , '--chiavi' , tipo = stra , predefinito = '5,8' , aiuto = 'Chiavi per la cifratura affine nel formato 'a,b'' )
arg = parser . analizza_args ( )

UN , B = carta geografica ( int , arg. chiavi . diviso ( ',' ) )

con aprire ( arg. file di input , 'R' ) COME file :
testo = file . Leggere ( )

# Estrai il nome del file dal percorso del file di input
input_nomefile , estensione = Voi . sentiero . testo diviso ( arg. file di input )
file_di_output_predefinito = input_nomefile + '_crittografato' + estensione

# Crittografa il testo utilizzando la cifratura affine
testo_crittografato = affine_cipher_encryption ( testo , UN , B )

# Scrivi il testo crittografato in un nuovo file
con aprire ( file_di_output_predefinito , 'In' ) COME file :
file . scrivere ( testo_crittografato )

Infine, una volta eseguita la funzione di crittografia, il nostro programma salverà l'output con la stessa estensione del file di input.

Ora salvalo in 'affine_cipher.py'. Ora esegui il programma digitando il seguente comando:

python affine_cipher. pi -H

Se non trovi alcun errore, l'output sarà simile alla seguente immagine:


Immagine alternativa e didascalia : Programma Python di cifratura affine

Verifica teorica

Abbiamo un messaggio confidenziale con il seguente nome 'message.txt' e vogliamo trasmetterlo ai nostri membri:


Immagine alternativa e didascalia : Testo in chiaro

Quindi, utilizziamo il programma che abbiamo creato prima di voler crittografare questo messaggio utilizzando la crittografia affine con le chiavi 3 e 7. Il comando è il seguente:

python affine_cipher. pi Messaggio. TXT -K 3 , 7


Immagine alternativa e didascalia : Programma Python di cifratura affine

Con la velocità di un batter d'occhio, il messaggio crittografato viene creato e salvato con successo in 'message_encrypted.txt'. Controlliamo come appare il messaggio:


Immagine alternativa e didascalia : Testo cifrato affine

Come puoi vedere, il messaggio è criptato. Solo i nostri membri che conoscono il metodo di cifratura e le sue chiavi sono in grado di decrittografare il messaggio.

Prova tu stesso

Scarica il codice sorgente del programma dalla nostra pagina GitHub all'indirizzo https://github.com/bimando/Affine-Cipher .

Conclusione

In conclusione, il metodo di crittografia con cifratura affine, una forma di cifratura a sostituzione monoalfabetica, offre una maggiore sicurezza attraverso l'utilizzo di due chiavi, richiedendo un'attenta considerazione durante la selezione della chiave. Comprendere concetti come il massimo comun divisore (MCD), i numeri coprimi e l'aritmetica modulare è essenziale per comprendere le complessità della cifratura affine.

L’equazione di cifratura affine, E(x) = (a.x + b) mod m, funge da strumento fondamentale per la crittografia dove “a” e “b” rappresentano le chiavi e “x” simboleggia l’indice delle lettere del testo in chiaro. È stata dimostrata l'implementazione di un programma Python automatizzato per il processo di crittografia con cifratura affine per semplificare in modo efficiente le attività di crittografia su larga scala. Il programma incorpora le funzionalità chiave tra cui l'importazione di librerie, la mappatura alfabetica, una funzione di crittografia e l'analisi degli argomenti della riga di comando per percorsi di input e output. In particolare, lo script abilita le impostazioni predefinite per le chiavi e i nomi dei file di output per facilitare un processo di crittografia senza interruzioni.

Domande frequenti (FAQ)

Q1: Cos'è la cifratura affine e in cosa differisce dalla cifratura di Cesare?

A1: La cifratura affine è un tipo di cifratura a sostituzione monoalfabetica che utilizza due chiavi, 'a' e 'b', per la crittografia. Al contrario, la cifratura di Cesare utilizza uno spostamento fisso di tre posizioni per ciascuna lettera nel testo in chiaro.

Q2. Quali sono i prerequisiti per comprendere la cifratura affine?

A2: Per comprendere a fondo la cifratura affine, è fondamentale comprendere concetti come il massimo comun divisore (MCD), i numeri coprimi e l'aritmetica modulare.

Q3: Come posso crittografare un messaggio utilizzando la crittografia affine in Python?

A3: per automatizzare il processo di crittografia della crittografia affine, è possibile utilizzare il programma Python descritto nell'articolo. Il programma crittografa in modo efficiente input di testo su larga scala, semplificando la procedura di crittografia. L'articolo fornisce istruzioni dettagliate sull'importazione delle librerie, sulla definizione della mappatura alfabetica, sulla creazione della funzione di crittografia e sull'analisi degli argomenti della riga di comando per i percorsi di input e output.