Affine Cipher Encryption pomocí Pythonu

Affine Cipher Encryption Pomoci Pythonu



Téma obsahu:

  1. Úvod
  2. Předpoklad znalost
  3. Afinní šifrovací rovnice
  4. Affine Cipher Encryption pomocí Pythonu
  5. Ověření konceptu
  6. Závěr
  7. Často kladené otázky (FAQ)

Afinní šifra představuje specifický druh substituční šifry spadající do kategorie monoalfabetických šifer. Na rozdíl od slavnější Caesarovy šifry, která posouvá každé písmeno v otevřeném textu o pevný počet tří pozic, šifra Affine používá dva klíče (a a b). Výběr klíčů by měl vyžadovat zvláštní pozornost.

Předpoklad znalost

Abyste hluboce porozuměli dnešnímu tématu, musíte pochopit následující pojmy:







  • Největší společný dělitel (GCD) a společné prvočíslo
  • Modulární aritmetika

Tyto pojmy jsou podrobně vysvětleny v předchozím článku nazvaném „Affine Cipher Mathematical Approach“.



Afinní šifrovací rovnice

Začněme vzorcem pro šifrování Affine:



E(x) = (a.x + b) mod m
Bývalý) Označuje šifrování abecedního indexu x
A Hodnota indexu „speciálního“ prvního klíče
X Indexová hodnota obyčejného písmene
b Hodnota indexu druhého klíče (dodatečná hodnota posunu)
mod m Operace modulo celkového počtu abecedy, což je 26


Alt-obrázek a titulek : Rovnice afinní šifry





Například chceme zašifrovat otevřený text „BIMANDO“ pomocí klíčů 7 a 13. Pomocí následujícího indexu tabulky nejprve převedeme prostý text na odpovídající číslo:


Alt-obrázek a titulek : Indexové číslování



Čistý text „BIMANDO“ je převeden na číslo indexu na „1 8 12 0 13 3 14“.


Alt-obrázek a titulek : Převede prostý text na hodnotu číslování indexu

Poté použijeme výpočet rovnice a výsledek je zobrazen následovně:


Alt-obrázek a titulek : Afinní šifrování

Čistý text „BIMANDO“ je tedy zašifrován pomocí šifry Affine s klíči 7 a 13, což vede k „URTNAIH“.

Affine Cipher Encryption pomocí Pythonu

Nyní řekněme, že chceme poslat důvěrnou zprávu, která obsahuje spoustu odstavců. Provádění šifrování Affine pomocí ručního procesu vyžaduje hodně úsilí a času a má vysokou šanci na výpočet chyb, že? Proto potřebujeme program, který automatizuje proces šifrování Affine Cipher. Následuje postupný postup vytvoření programu Python:

1. Importujte požadované knihovny
Náš program začíná importem nezbytných modulů, jako je argparse, string a os pro analýzu argumentů příkazového řádku, operace s řetězci a funkce související s operačním systémem.

import argparse
import tětiva
import vy

2. Definování abecedního mapování
Potom definujeme abecedu jako řetězec malých anglických písmen. To se používá pro mapování znaků během procesu šifrování později.

abeceda = tětiva . ascii_malá písmena

3. Funkce Affine Cipher Encryption
To je hlavní funkce našeho programu. Vezme vstupní text a dva klíče, „a“ a „b“, a použije na text šifrování Affine, přičemž zachová strukturu textu.

def affine_cipher_encryption ( text , A , b ) :
zašifrovaný_text = ''
pro char v text:
-li char. dolní ( ) v abeceda:
-li char. isupper ( ) :
zašifrovaný_text + = chr ( ( ( a * ( slovo ( char. dolní ( ) ) - 97 ) + b ) % 26 ) + 65 )
jiný :
zašifrovaný_text + = chr ( ( ( a * ( slovo ( char ) - 97 ) + b ) % 26 ) + 97 )
jiný :

4. Podmíněná hlavní kontrola
V tomto kódu bloku zkontrolujte, zda se spouští jako hlavní program. Nastaví analyzátor argumentů s popisy skriptu a jeho argumentů. Požadovaný argument je pouze cesta vstupu textového souboru. Když neurčíme výstupní cestu, chceme, aby nastavila výchozí název vstupního souboru s připojeným „_encrypted“. U argumentu „keys“ chceme, aby byl naformátován na „a,b“. Ale pokud to nastavíme, výchozí je 5 a 8.

-li __název__ == '__hlavní__' :
analyzátor = argparse. ArgumentParser ( popis = 'Affine Cipher Encryption z textového souboru' )
analyzátor . přidat_argument ( 'vložte soubor' , Pomoc = 'Cesta ke vstupnímu textovému souboru' )
analyzátor . přidat_argument ( '-k' , '--keys' , typ = str , výchozí = '5,8' , Pomoc = 'Klíče pro afinní šifru ve formátu 'a,b'' )
argumenty = analyzátor . parse_args ( )

A , b = mapa ( int , argumenty. klíče . rozdělit ( ',' ) )

s OTEVŘENO ( argumenty. vložte soubor , 'r' ) tak jako soubor :
text = soubor . číst ( )

# Extrahujte název souboru ze vstupní cesty k souboru
název_vstupního_souboru , rozšíření = vy . cesta . splittext ( argumenty. vložte soubor )
default_output_file = název_vstupního_souboru + '_encrypted' + prodloužení

# Šifrujte text pomocí afinní šifry
zašifrovaný_text = affine_cipher_encryption ( text , A , b )

# Zapište zašifrovaný text do nového souboru
s OTEVŘENO ( default_output_file , 'V' ) tak jako soubor :
soubor . napsat ( zašifrovaný_text )

Nakonec, jakmile je šifrovací funkce hotová, náš program uloží výstup se stejnou příponou souboru jako vstupní soubor.

Nyní jej uložte na „affine_cipher.py“. Nyní spusťte program zadáním následujícího příkazu:

python affine_cipher. py -h

Pokud nenajdete žádnou chybu, bude výstup vypadat jako na následujícím obrázku:


Alt-obrázek a titulek : Program Affine Cipher Python

Ověření konceptu

Máme důvěrnou zprávu s následujícím názvem „message.txt“ a chceme ji vysílat našim členům:


Alt-obrázek a titulek : Prostý text

Použijeme tedy program, který jsme vytvořili předtím, než chceme tuto zprávu zašifrovat pomocí šifry Affine s klíči 3 a 7. Příkaz je následující:

python affine_cipher. py zpráva. txt -k 3 , 7


Alt-obrázek a titulek : Program Affine Cipher Python

S rychlostí mrknutí oka je šifrovaná zpráva úspěšně vytvořena a uložena do „message_encrypted.txt“. Podívejme se, jak zpráva vypadá:


Alt-obrázek a titulek : Affine Ciphertext

Jak vidíte, zpráva je zakódovaná. Pouze naši členové, kteří znají šifrovací metodu a její klíče, jsou schopni zprávu dešifrovat.

Zkus to sám

Stáhněte si tento zdrojový kód programu na naší stránce GitHub na adrese https://github.com/bimando/Affine-Cipher .

Závěr

Závěrem lze říci, že metoda šifrování Affine cipher, forma monoalfabetické substituční šifry, nabízí zvýšenou bezpečnost díky použití dvou klíčů, což vyžaduje pečlivé zvážení při výběru klíče. Pochopení pojmů, jako je největší společný dělitel (GCD), ko-prvočísla a modulární aritmetika, jsou zásadní pro pochopení složitosti afinní šifry.

Rovnice afinní šifry, E(x) = (a.x + b) mod m, slouží jako základní nástroj pro šifrování, kde „a“ a „b“ představují klíče a „x“ symbolizuje index písmene v prostém textu. Implementace automatizovaného programu Python pro šifrovací proces Affine byla ukázána pro efektivní zefektivnění rozsáhlých šifrovacích úloh. Program zahrnuje klíčové funkce včetně importu knihoven, mapování abecedy, šifrovací funkce a analýzy argumentů příkazového řádku pro vstupní a výstupní cesty. Je pozoruhodné, že skript umožňuje výchozí nastavení pro klíče a názvy výstupních souborů, aby se usnadnil bezproblémový proces šifrování.

Často kladené otázky (FAQ)

Q1: Co je Affine šifra a jak se liší od Caesarovy šifry?

A1: Affine šifra je typ monoalfabetické substituční šifry, která používá dva klíče, „a“ a „b“, pro šifrování. Naproti tomu Caesarova šifra využívá pevný posun o tři pozice pro každé písmeno v otevřeném textu.

Q2. Jaké jsou předpoklady pro pochopení šifry Affine?

Odpověď 2: Pro důkladné pochopení afinní šifry je důležité mít přehled o konceptech, jako je největší společný dělitel (GCD), souběžná prvočísla a modulární aritmetika.

Otázka 3: Jak mohu zašifrovat zprávu pomocí šifry Affine v Pythonu?

Odpověď 3: Chcete-li automatizovat proces šifrování Affine, můžete použít program Python, který je popsán v článku. Program efektivně šifruje rozsáhlé textové vstupy a zjednodušuje šifrovací postup. Tento článek poskytuje podrobné pokyny pro import knihoven, definování mapování abecedy, vytvoření funkce šifrování a analýzu argumentů příkazového řádku pro vstupní a výstupní cesty.