Xifratge de xifratge afí amb Python

Xifratge De Xifratge Afi Amb Python



Tema de continguts:

  1. Introducció
  2. Coneixements previs
  3. Equació de xifrat afí
  4. Xifratge de xifratge afí mitjançant Python
  5. Prova de concepte
  6. Conclusió
  7. Preguntes freqüents (FAQ)

El xifrat afí representa un tipus específic de xifrat de substitució, que es troba dins de la categoria de xifratge monoalfabètic. A diferència del més famós xifrat de César, que canvia cada lletra en text pla per un nombre fix de tres posicions, el xifrat afí utilitza dues claus (a i b). L'elecció de les claus hauria de tenir una consideració especial.

Coneixements previs

Per entendre profundament el tema d'avui, heu d'entendre els conceptes següents:







  • El màxim comú divisor (MCD) i nombre coprim
  • Aritmètica modular

Aquests conceptes s'expliquen detalladament a l'article anterior titulat 'Enfocament matemàtic de xifrat afí'.



Equació de xifrat afí

Comencem amb la fórmula per al xifratge de xifrat afí:



E(x) = (a.x + b) mod m
Antiga) Indica un xifratge de l'índex alfabètic x
a Un valor d'índex de la primera clau 'especial'.
x Un valor d'índex de la lletra senzilla
b Un valor d'índex de la segona clau (valor de canvi addicional)
mod m Les operacions de mòdul de la quantitat total de l'alfabet que és 26


Imatge alternativa i subtítol : Equació de xifrat afí





Per exemple, volem xifrar el text pla “BIMANDO” amb les claus 7 i 13. Utilitzant l'índex de taula següent, primer convertim el text pla al seu número corresponent:


Imatge alternativa i subtítol : Numeració d'índex



El text sense format “BIMANDO” es converteix en un número d'indexació a “1 8 12 0 13 3 14”.


Imatge alternativa i subtítol : Converteix un text pla en un valor de numeració d'índex

A continuació, apliquem el càlcul de l'equació i el resultat es mostra de la següent manera:


Imatge alternativa i subtítol : Xifrat afí

Per tant, el text sense format 'BIMANDO' es xifra mitjançant el xifrat afí amb les claus 7 i 13 que resulta en 'URTNAIH'.

Xifratge de xifratge afí mitjançant Python

Ara, suposem que volem enviar un missatge confidencial que contingui un munt de paràgrafs. Fer xifratge de xifratge Affine amb el procés manual requereix molt d'esforç i temps, i té una gran probabilitat de fallar el càlcul, oi? Per tant, necessitem un programa que automatitzi el procés de xifratge Affine Cipher. El següent és el procés pas a pas per crear un programa Python:

1. Importeu les biblioteques necessàries
El nostre programa comença important els mòduls necessaris, com ara argparse, string i OS per a l'anàlisi d'arguments de línia d'ordres, operacions de cadena i funcionalitats relacionades amb el sistema operatiu, respectivament.

importar argparse
importar corda
importar vostè

2. Definició de mapatge alfabètic
A continuació, definim l'alfabet com una cadena de lletres angleses minúscules. S'utilitza per mapejar els caràcters durant el procés de xifratge més tard.

alfabet = corda . ascii_minúscula

3. Funció de xifratge de xifratge afí
Aquesta és la funció bàsica del nostre programa. Pren el text d'entrada i dues claus, 'a' i 'b', i aplica el xifratge de xifrat Affine al text, conservant l'estructura del text.

def xifrat_afin ( text , a , b ) :
text_xifrat = ''
per char en text:
si char. més baix ( ) en alfabet:
si char. és superior ( ) :
text_xifrat + = chr ( ( ( un * ( paraula ( char. més baix ( ) ) - 97 ) + b ) % 26 ) + 65 )
altra cosa :
text_xifrat + = chr ( ( ( un * ( paraula ( char ) - 97 ) + b ) % 26 ) + 97 )
altra cosa :

4. Comprovació principal condicional
En aquest codi de bloc, comproveu si s'està executant com a programa principal. Configura l'analitzador d'arguments amb descripcions per a l'script i els seus arguments. L'argument requerit és només una ruta d'entrada d'un fitxer de text. Quan no especifiquem el camí de sortida, volem que estableixi un valor predeterminat al nom del fitxer d'entrada amb '_encrypted' afegit. Per a l'argument 'claus', volem que tingui el format 'a,b'. Però si el configurem, el valor predeterminat és 5 i 8.

si __nom__ == '__principal__' :
analitzador = argparse. ArgumentParser ( descripció = 'Xifrat de xifrat afí a partir d'un fitxer de text' )
analitzador . afegir_argument ( 'fitxer_entrada' , ajuda = 'Camí al fitxer de text d'entrada' )
analitzador . afegir_argument ( '-k' , '--claus' , tipus = str , per defecte = '5,8' , ajuda = 'Claus per al xifratge afí en el format 'a,b'' )
args = analitzador . parse_args ( )

a , b = mapa ( int , args. claus . dividir ( ',' ) )

amb obert ( args. fitxer_entrada , 'r' ) com dossier :
text = dossier . llegir ( )

# Extraieu el nom del fitxer de la ruta del fitxer d'entrada
nom_fitxer_entrada , extensió = vostè . Camí . text dividit ( args. fitxer_entrada )
fitxer_de_sortida_predeterminat = nom_fitxer d'entrada + '_xifrat' + extensió

# Xifra el text amb el xifrat afí
text_xifrat = xifrat_afin ( text , a , b )

# Escriu el text xifrat en un fitxer nou
amb obert ( fitxer_de_sortida_predeterminat , 'En' ) com dossier :
dossier . escriure ( text_xifrat )

Finalment, un cop feta la funció de xifratge, el nostre programa desarà la sortida amb la mateixa extensió de fitxer que el fitxer d'entrada.

Ara, deseu-lo a 'affine_cipher.py'. Ara, executeu el programa escrivint l'ordre següent:

xifrat_afin de Python. py -h

Si no trobeu cap error, la sortida sembla la imatge següent:


Imatge alternativa i subtítol : Programa Affine Cipher Python

Prova de concepte

Tenim un missatge confidencial amb el nom següent 'message.txt' i volem transmetre-lo als nostres membres:


Imatge alternativa i subtítol : Text simple

Per tant, utilitzem el programa que hem creat abans de voler xifrar aquest missatge amb el xifratge Affine amb les claus 3 i 7. L'ordre és la següent:

xifrat_afin de Python. py missatge. txt -k 3 , 7


Imatge alternativa i subtítol : Programa Affine Cipher Python

Amb la velocitat d'un parpelleig d'ulls, el missatge xifrat es crea correctament i es desa a 'message_encrypted.txt'. Comprovem com és el missatge:


Imatge alternativa i subtítol : Text xifrat afí

Com podeu veure, el missatge està remenat. Només els nostres membres que coneixen el mètode de xifrat i les seves claus són capaços de desxifrar el missatge.

Prova-ho tu mateix

Baixeu el codi font d'aquest programa a la nostra pàgina de GitHub a https://github.com/bimando/Affine-Cipher .

Conclusió

En conclusió, el mètode de xifratge de xifratge Affine, una forma de xifratge de substitució monoalfabètica, ofereix una seguretat millorada mitjançant la utilització de dues claus, demanant una consideració acurada durant la selecció de claus. La comprensió de conceptes com el màxim comú divisor (GCD), els nombres coprims i l'aritmètica modular és essencial per comprendre les complexitats del xifrat afí.

L'equació de xifratge afí, E(x) = (a.x + b) mod m, serveix com a eina fonamental per al xifratge on 'a' i 'b' representen les claus i 'x' simbolitza l'índex de la lletra de text pla. Es va demostrar que la implementació d'un programa automatitzat de Python per al procés de xifratge de xifratge Affine racionalitza les tasques de xifratge a gran escala de manera eficient. El programa incorpora les funcionalitats clau, com ara la importació de biblioteques, mapeig alfabètic, una funció de xifratge i anàlisi d'arguments de línia d'ordres per a les rutes d'entrada i sortida. En particular, l'script permet la configuració predeterminada per a les claus i els noms dels fitxers de sortida per facilitar un procés de xifratge perfecte.

Preguntes freqüents (FAQ)

P1: Què és el xifrat afí i en què es diferencia del xifrat Cèsar?

A1: El xifratge afí és un tipus de xifratge de substitució monoalfabètica que utilitza dues claus, 'a' i 'b', per al xifratge. En canvi, el xifrat de Cèsar utilitza un desplaçament fix de tres posicions per a cada lletra del text pla.

P2. Quins són els requisits previs per entendre el xifrat afí?

A2: Per comprendre a fons el xifrat afí, és crucial tenir una comprensió de conceptes com ara el màxim comú divisor (MCD), nombres coprims i aritmètica modular.

P3: Com puc xifrar un missatge amb el xifratge Affine a Python?

A3: Per automatitzar el procés de xifratge de xifratge Affine, podeu utilitzar el programa Python que es descriu a l'article. El programa xifra eficaçment les entrades de text a gran escala, simplificant el procediment de xifratge. L'article proporciona instruccions pas a pas sobre la importació de les biblioteques, la definició de l'assignació de l'alfabet, la creació de la funció de xifratge i l'anàlisi dels arguments de la línia d'ordres per als camins d'entrada i sortida.