Affine Cipher Encryption Gamit ang Python

Affine Cipher Encryption Gamit Ang Python



Paksa ng Nilalaman:

  1. Panimula
  2. Pangunahing Kaalaman
  3. Affine Cipher Equation
  4. Affine Cipher Encryption Gamit ang Python
  5. Patunay ng konsepto
  6. Konklusyon
  7. Mga Madalas Itanong (FAQs)

Ang Affine cipher ay kumakatawan sa isang partikular na uri ng substitution cipher, na nasa ilalim ng kategorya ng mga monoalphabetic cipher. Hindi tulad ng mas sikat na Caesar cipher, na naglilipat sa bawat titik sa plaintext sa pamamagitan ng isang nakapirming tatlong bilang ng mga posisyon, ang Affine cipher ay gumagamit ng dalawang susi (a at b). Ang pagpili ng mga susi ay dapat na nangangailangan ng espesyal na pagsasaalang-alang.

Pangunahing Kaalaman

Upang maunawaan nang malalim ang tungkol sa paksa ngayon, kailangan mong maunawaan ang mga sumusunod na konsepto:







  • Ang Greatest Common Divisor (GCD) at Co-prime number
  • Modular arithmetic

Ang mga konseptong iyon ay ipinaliwanag nang detalyado sa nakaraang artikulo na pinamagatang 'Affine Cipher Mathematical Approach'.



Affine Cipher Equation

Magsimula tayo sa formula para sa Affine cipher encryption:



E(x) = (a.x + b) mod m
dating) Nagsasaad ng Encryption ng x alphabetical index
a Isang index na halaga ng 'espesyal' na unang key
x Isang index na halaga ng plain letter
b Isang index value ng pangalawang key (karagdagang shift value)
mod m Ang modulo operations ng kabuuang halaga ng alpabeto na 26


Alt-image at caption : Affine Cipher Equation





Halimbawa, gusto naming i-encrypt ang plaintext na “BIMANDO” gamit ang 7 at 13 key. Gamit ang sumusunod na index ng talahanayan, kino-convert muna namin ang plaintext sa katumbas nitong numero:


Alt-image at caption : Index Numbering



Ang plaintext na “BIMANDO” ay ginawang indexing number sa “1 8 12 0 13 3 14”.


Alt-image at caption : I-convert ang isang Plaintext sa isang Index Numbering Value

Pagkatapos, inilalapat namin ang pagkalkula ng equation, at ang resulta ay ipinapakita bilang mga sumusunod:


Alt-image at caption : Affine Ciphering

Kaya, ang plaintext ng 'BIMANDO' ay naka-encrypt gamit ang Affine cipher na may mga key 7 at 13 na nagreresulta sa 'URTNAIH'.

Affine Cipher Encryption Gamit ang Python

Ngayon, sabihin nating gusto naming magpadala ng kumpidensyal na mensahe na naglalaman ng isang grupo ng mga talata. Ang paggawa ng Affine cipher encryption gamit ang manu-manong proseso ay nangangailangan ng maraming pagsisikap at oras, at may mataas na pagkakataong mawalan ng pagkalkula, tama ba? Samakatuwid, kailangan namin ng program na nag-automate sa proseso ng pag-encrypt ng Affine Cipher. Ang sumusunod ay ang hakbang-hakbang na proseso upang lumikha ng isang Python program:

1. I-import ang Mga Kinakailangang Aklatan
Nagsisimula ang aming programa sa pamamagitan ng pag-import ng mga kinakailangang module gaya ng argparse, string, at os para sa command-line argument parsing, string operations, at operating system-related functionality, ayon sa pagkakabanggit.

angkat argparse
angkat string
angkat ikaw

2. Pagtukoy sa Alphabet Mapping
Pagkatapos, tinukoy namin ang alpabeto bilang isang string ng maliliit na letrang Ingles. Ito ay ginagamit para sa pagmamapa ng mga character sa panahon ng proseso ng pag-encrypt mamaya.

alpabeto = string . ascii_lowercase

3. Affine Cipher Encryption Function
Ito ang pangunahing tungkulin ng aming programa. Kinukuha nito ang input text at dalawang key, 'a' at 'b', at inilalapat ang Affine cipher encryption sa text, na pinapanatili ang istraktura ng text.

def affine_cipher_encryption ( text , a , b ) :
naka-encrypt na_text = ''
para sa char sa text:
kung char. mas mababa ( ) sa alpabeto:
kung char. isupper ( ) :
encrypted_text + = chr ( ( ( isang * ( salita ( char. mas mababa ( ) ) - 97 ) + b ) % 26 ) + 65 )
iba pa :
encrypted_text + = chr ( ( ( isang * ( salita ( char ) - 97 ) + b ) % 26 ) + 97 )
iba pa :

4. Kondisyon Pangunahing Pagsusuri
Sa block code na ito, tingnan kung ito ay isinasagawa bilang pangunahing programa. Itinatakda nito ang argument parser na may mga paglalarawan para sa script at mga argumento nito. Ang kinakailangang argumento ay isang landas lamang ng isang input ng text file. Kapag hindi namin tinukoy ang path ng output, gusto naming magtakda ito ng default sa pangalan ng input file na may '_encrypted' na nakadugtong dito. Para sa argumentong 'keys', gusto naming ma-format ito sa 'a,b'. Ngunit kung itinakda natin ito, ang default ay 5 at 8.

kung __pangalan__ == '__pangunahing__' :
parser = argparse. ArgumentParser ( paglalarawan = 'Affine Cipher Encryption mula sa isang text file' )
parser . add_argument ( 'input_file' , tulong = 'Path sa input text file' )
parser . add_argument ( '-k' , '--mga susi' , uri = str , default = '5.8' , tulong = 'Mga Susi para sa Affine Cipher sa format na 'a,b'' )
args = parser . parse_args ( )

a , b = mapa ( int , args. mga susi . hati ( ',' ) )

kasama bukas ( args. input_file , 'r' ) bilang file :
text = file . basahin ( )

# I-extract ang pangalan ng file mula sa path ng input file
input_filename , extension = ikaw . landas . splitext ( args. input_file )
default_output_file = input_filename + '_naka-encrypt' + extension

# I-encrypt ang teksto gamit ang affine cipher
naka-encrypt na_text = affine_cipher_encryption ( text , a , b )

# Isulat ang naka-encrypt na teksto sa isang bagong file
kasama bukas ( default_output_file , 'Sa' ) bilang file :
file . magsulat ( naka-encrypt na_text )

Sa wakas, kapag tapos na ang pag-encrypt, ise-save ng aming programa ang output na may parehong extension ng file bilang input file.

Ngayon, i-save ito sa “affine_cipher.py”. Ngayon, patakbuhin ang programa sa pamamagitan ng pag-type ng sumusunod na command:

python affine_cipher. py -h

Kung wala kang nakitang error, ang output ay kamukha ng sumusunod na larawan:


Alt-image at caption : Affine Cipher Python Program

Patunay ng konsepto

Mayroon kaming kumpidensyal na mensahe na may sumusunod na 'message.txt' na pangalan, at gusto naming i-broadcast ito sa aming mga miyembro:


Alt-image at caption : Plaintext

Kaya, ginagamit namin ang program na nilikha namin bago namin gustong i-encrypt ang mensaheng ito gamit ang Affine cipher na may mga key 3 at 7. Ang command ay ang mga sumusunod:

python affine_cipher. py mensahe. txt -k 3 , 7


Alt-image at caption : Affine Cipher Python Program

Sa bilis ng isang kisap-mata, matagumpay na nalikha at nai-save ang naka-encrypt na mensahe sa “message_encrypted.txt”. Tingnan natin kung ano ang hitsura ng mensahe:


Alt-image at caption : Affine Ciphertext

Tulad ng nakikita mo, ang mensahe ay scrambled. Tanging ang aming mga miyembro na nakakaalam ng pamamaraan ng cipher at mga susi nito ang makakapag-decrypt ng mensahe.

Subukan ito sa iyong sarili

I-download ang source code ng program na ito sa aming GitHub page sa https://github.com/bimando/Affine-Cipher .

Konklusyon

Sa konklusyon, ang paraan ng pag-encrypt ng Affine cipher, isang anyo ng monoalphabetic substitution cipher, ay nag-aalok ng pinahusay na seguridad sa pamamagitan ng paggamit ng dalawang key, na nangangailangan ng maingat na pagsasaalang-alang sa panahon ng pagpili ng key. Ang pag-unawa sa mga konsepto tulad ng Greatest Common Divisor (GCD), co-prime number, at modular arithmetic ay mahalaga para maunawaan ang mga intricacies ng Affine cipher.

Ang Affine cipher equation, E(x) = (a.x + b) mod m, ay nagsisilbing pangunahing tool para sa pag-encrypt kung saan ang 'a' at 'b' ay kumakatawan sa mga susi at ang 'x' ay sumisimbolo sa index ng plaintext na titik. Ang pagpapatupad ng isang automated na Python program para sa proseso ng Affine cipher encryption ay ipinakita upang i-streamline ang malakihang mga gawain sa pag-encrypt nang mahusay. Isinasama ng programa ang mga pangunahing pag-andar kabilang ang pag-import ng mga aklatan, pagmamapa ng alpabeto, isang function ng pag-encrypt, at pag-parse ng argumento ng command-line para sa mga path ng input at output. Kapansin-pansin, ang script ay nagbibigay-daan sa mga default na setting para sa mga susi at mga pangalan ng output file upang mapadali ang isang tuluy-tuloy na proseso ng pag-encrypt.

Mga Madalas Itanong (FAQs)

Q1: Ano ang Affine cipher at paano ito naiiba sa Caesar cipher?

A1: Ang Affine cipher ay isang uri ng monoalphabetic substitution cipher na gumagamit ng dalawang key, 'a' at 'b', para sa pag-encrypt. Sa kaibahan, ang Caesar cipher ay gumagamit ng isang nakapirming shift ng tatlong posisyon para sa bawat titik sa plaintext.

Q2. Ano ang mga kinakailangan para maunawaan ang Affine cipher?

A2: Upang lubos na maunawaan ang Affine cipher, mahalagang magkaroon ng kaalaman sa mga konsepto tulad ng Greatest Common Divisor (GCD), co-prime numbers, at modular arithmetic.

Q3: Paano ko mai-encrypt ang isang mensahe gamit ang Affine cipher sa Python?

A3: Upang i-automate ang proseso ng Affine cipher encryption, maaari mong gamitin ang Python program na nakabalangkas sa artikulo. Ang programa ay mahusay na nag-encrypt ng malakihang mga input ng teksto, na nagpapasimple sa pamamaraan ng pag-encrypt. Ang artikulo ay nagbibigay ng sunud-sunod na mga tagubilin sa pag-import ng mga aklatan, pagtukoy sa alphabet mapping, paggawa ng encryption function, at pag-parse ng command-line argument para sa input at output path.