Affine Cipher Encryption pomocou Pythonu

Affine Cipher Encryption Pomocou Pythonu



Téma obsahu:

  1. Úvod
  2. Nevyhnutné znalosti
  3. Afinná šifrová rovnica
  4. Affine Cipher Encryption pomocou Pythonu
  5. Dôkaz konceptu
  6. Záver
  7. Často kladené otázky (FAQ)

Afinná šifra predstavuje špecifický druh substitučnej šifry, ktorá patrí do kategórie monoalfabetických šifier. Na rozdiel od známejšej Caesarovej šifry, ktorá posúva každé písmeno v otvorenom texte o pevný počet troch pozícií, šifra Affine využíva dva kľúče (a a b). Výber kľúčov by si mal vyžadovať osobitnú pozornosť.

Nevyhnutné znalosti

Ak chcete hlbšie pochopiť dnešnú tému, musíte pochopiť nasledujúce pojmy:







  • Najväčší spoločný deliteľ (GCD) a spoločné prvočíslo
  • Modulárna aritmetika

Tieto pojmy sú podrobne vysvetlené v predchádzajúcom článku s názvom „Matematický prístup afinnej šifry“.



Afinná šifrová rovnica

Začnime vzorcom pre šifrovanie Affine:



E(x) = (a.x + b) mod m
bývalý) Označuje šifrovanie abecedného indexu x
a Hodnota indexu „špeciálneho“ prvého kľúča
X Indexová hodnota obyčajného písmena
b Hodnota indexu druhého kľúča (dodatočná hodnota posunu)
mod m Operácie modulo celkového množstva abecedy, ktorá je 26


Alternatívny obrázok a titulok : Rovnica afinnej šifry





Napríklad chceme zašifrovať otvorený text „BIMANDO“ pomocou kľúčov 7 a 13. Pomocou nasledujúceho indexu tabuľky najprv skonvertujeme obyčajný text na zodpovedajúce číslo:


Alternatívny obrázok a titulok : Indexové číslovanie



Čistý text „BIMANDO“ sa skonvertuje na indexové číslo na „1 8 12 0 13 3 14“.


Alternatívny obrázok a titulok : Prevod obyčajného textu na hodnotu indexového číslovania

Potom použijeme výpočet rovnice a výsledok sa zobrazí takto:


Alternatívny obrázok a titulok : Afinné šifrovanie

Čistý text „BIMANDO“ je teda zašifrovaný pomocou šifry Affine s kľúčmi 7 a 13, čo vedie k „URTNAIH“.

Affine Cipher Encryption pomocou Pythonu

Teraz povedzme, že chceme poslať dôvernú správu, ktorá obsahuje veľa odsekov. Šifrovanie Affine pomocou manuálneho procesu si vyžaduje veľa úsilia a času a má veľkú šancu na výpočet miss, však? Preto potrebujeme program, ktorý automatizuje proces šifrovania Affine Cipher. Nasleduje krok za krokom proces vytvorenia programu Python:

1. Importujte požadované knižnice
Náš program začína importovaním potrebných modulov, ako sú argparse, string a os na analýzu argumentov príkazového riadka, operácie s reťazcami a funkcie súvisiace s operačným systémom.

importovať argparse
importovať reťazec
importovať vy

2. Definovanie abecedného mapovania
Potom definujeme abecedu ako reťazec malých anglických písmen. Toto sa používa na neskoršie mapovanie znakov počas procesu šifrovania.

abeceda = reťazec . ascii_malé písmená

3. Funkcia Affine Cipher Encryption
Toto je hlavná funkcia nášho programu. Vezme vstupný text a dva kľúče „a“ a „b“ a na text použije šifrovanie Affine, pričom zachová štruktúru textu.

def affine_cipher_encryption ( text , a , b ) :
zašifrovaný_text = ''
pre char v text:
ak char. nižšie ( ) v abeceda:
ak char. isupper ( ) :
zašifrovaný_text + = chr ( ( ( a * ( slovo ( char. nižšie ( ) ) - 97 ) + b ) % 26 ) + 65 )
inak :
zašifrovaný_text + = chr ( ( ( a * ( slovo ( char ) - 97 ) + b ) % 26 ) + 97 )
inak :

4. Podmienená hlavná kontrola
V tomto blokovom kóde skontrolujte, či sa vykonáva ako hlavný program. Nastaví analyzátor argumentov s popisom skriptu a jeho argumentov. Požadovaný argument je len cesta vstupu textového súboru. Keď nešpecifikujeme výstupnú cestu, chceme, aby nastavil predvolený názov vstupného súboru s pridaným „_encrypted“. Pre argument „keys“ chceme, aby bol naformátovaný na „a,b“. Ale ak to nastavíme, predvolená hodnota je 5 a 8.

ak __názov__ == '__Hlavná__' :
syntaktický analyzátor = argparse. ArgumentParser ( popis = 'Affine Cipher Encryption z textového súboru' )
syntaktický analyzátor . pridať_argument ( 'vstupný_súbor' , Pomoc = 'Cesta k vstupnému textovému súboru' )
syntaktický analyzátor . pridať_argument ( '-k' , '--keys' , typu = str , predvolená = '5,8' , Pomoc = 'Kľúče pre afinnú šifru vo formáte 'a,b'' )
args = syntaktický analyzátor . parse_args ( )

a , b = mapa ( int , args. kľúče . rozdeliť ( ',' ) )

s OTVORENÉ ( args. vstupný_súbor , 'r' ) ako súbor :
text = súbor . čítať ( )

# Extrahujte názov súboru zo vstupnej cesty k súboru
názov vstupného_súboru , rozšírenie = vy . cesta . splittext ( args. vstupný_súbor )
default_output_file = názov vstupného_súboru + '_encrypted' + predĺženie

# Zašifrujte text pomocou afinnej šifry
zašifrovaný_text = affine_cipher_encryption ( text , a , b )

# Napíšte zašifrovaný text do nového súboru
s OTVORENÉ ( default_output_file , 'v' ) ako súbor :
súbor . písať ( zašifrovaný_text )

Nakoniec, keď je šifrovacia funkcia hotová, náš program uloží výstup s rovnakou príponou súboru ako vstupný súbor.

Teraz ho uložte na „affine_cipher.py“. Teraz spustite program zadaním nasledujúceho príkazu:

python affine_cipher. py -h

Ak nenájdete žiadnu chybu, výstup bude vyzerať ako nasledujúci obrázok:


Alternatívny obrázok a titulok : Program Affine Cipher Python

Dôkaz konceptu

Máme dôvernú správu s nasledujúcim názvom „message.txt“ a chceme ju odoslať našim členom:


Alternatívny obrázok a titulok : Obyčajný text

Použijeme teda program, ktorý sme vytvorili predtým, ako chceme túto správu zašifrovať pomocou šifry Affine s kľúčmi 3 a 7. Príkaz je nasledovný:

python affine_cipher. py správu. TXT -k 3 , 7


Alternatívny obrázok a titulok : Program Affine Cipher Python

Rýchlosťou mihnutia oka sa zašifrovaná správa úspešne vytvorí a uloží do súboru „message_encrypted.txt“. Pozrime sa, ako správa vyzerá:


Alternatívny obrázok a titulok : Affine Ciphertext

Ako vidíte, správa je zakódovaná. Iba naši členovia, ktorí poznajú šifrovaciu metódu a jej kľúče, sú schopní dešifrovať správu.

Vyskúšajte si to sami

Stiahnite si tento zdrojový kód programu na našej stránke GitHub na adrese https://github.com/bimando/Affine-Cipher .

Záver

Na záver, metóda šifrovania Affine cipher, forma monoalfabetickej substitučnej šifry, ponúka zvýšenú bezpečnosť pomocou použitia dvoch kľúčov, čo si vyžaduje starostlivé zváženie pri výbere kľúča. Pochopenie pojmov ako najväčší spoločný deliteľ (GCD), ko-prvočísla a modulárna aritmetika sú nevyhnutné na pochopenie zložitosti afinnej šifry.

Rovnica afinnej šifry, E(x) = (a.x + b) mod m, slúži ako základný nástroj na šifrovanie, kde „a“ a „b“ predstavujú kľúče a „x“ symbolizuje index písmena s otvoreným textom. Ukázalo sa, že implementácia automatizovaného programu Python pre šifrovací proces Affine efektívne zefektívňuje rozsiahle úlohy šifrovania. Program obsahuje kľúčové funkcie vrátane importu knižníc, mapovania abecedy, funkcie šifrovania a analýzy argumentov príkazového riadka pre vstupné a výstupné cesty. Predovšetkým skript umožňuje predvolené nastavenia pre kľúče a názvy výstupných súborov, aby sa uľahčil proces plynulého šifrovania.

Často kladené otázky (FAQ)

Q1: Čo je Affinova šifra a ako sa líši od Caesarovej šifry?

Odpoveď 1: Affinová šifra je typ monoalfabetickej substitučnej šifry, ktorá využíva na šifrovanie dva kľúče „a“ a „b“. Naproti tomu Caesarova šifra využíva pevný posun o tri pozície pre každé písmeno v otvorenom texte.

Q2. Aké sú predpoklady na pochopenie Affinovej šifry?

Odpoveď 2: Na dôkladné pochopenie afinnej šifry je dôležité mať prehľad o pojmoch, ako je najväčší spoločný deliteľ (GCD), ko-prvočísla a modulárna aritmetika.

Otázka 3: Ako môžem zašifrovať správu pomocou šifry Affine v Pythone?

Odpoveď 3: Na automatizáciu procesu šifrovania Affine môžete použiť program Python, ktorý je uvedený v článku. Program efektívne šifruje veľké textové vstupy, čím zjednodušuje postup šifrovania. Článok poskytuje podrobné pokyny na importovanie knižníc, definovanie abecedného mapovania, vytvorenie funkcie šifrovania a analýzu argumentov príkazového riadka pre vstupné a výstupné cesty.