Affin titkosítási titkosítás Python használatával

Affin Titkositasi Titkositas Python Hasznalataval



Tartalom témája:

  1. Bevezetés
  2. Előfeltétel Tudás
  3. Affin titkosítási egyenlet
  4. Affin titkosítási titkosítás Python használatával
  5. Proof of Concept
  6. Következtetés
  7. Gyakran Ismételt Kérdések (GYIK)

Az affin titkosítás a helyettesítő titkosítás egy sajátos fajtáját képviseli, amely az egyalfabetikus rejtjelek kategóriájába tartozik. Ellentétben a híresebb Caesar-rejtjellel, amely az egyszerű szöveg minden betűjét meghatározott három pozícióval eltolja, az affin titkosítás két kulcsot (a és b) használ. A kulcsok kiválasztása különös figyelmet igényel.

Előfeltétel Tudás

Ahhoz, hogy mélyen megértsd a mai témát, meg kell értened a következő fogalmakat:







  • A legnagyobb közös osztó (GCD) és társprímszám
  • Moduláris aritmetika

Ezeket a fogalmakat az előző, „Affine Cipher Mathematical Approach” című cikk részletesen kifejti.



Affin titkosítási egyenlet

Kezdjük az affin titkosítás képletével:



E(x) = (a.x + b) mod m
Korábbi) Az x alfabetikus index titkosítását jelöli
a A „speciális” első kulcs indexértéke
x Az egyszerű betű indexértéke
b A második kulcs indexértéke (további eltolási érték)
mod m Az ábécé teljes összegének modulo műveletei, ami 26


Alt-kép és felirat : Affin titkosítási egyenlet





Például a „BIMANDO” egyszerű szöveget szeretnénk titkosítani a 7 és 13 kulccsal. A következő táblázatindex segítségével először átalakítjuk a nyílt szöveget a megfelelő számra:


Alt-kép és felirat : Indexszámozás



A „BIMANDO” egyszerű szöveget indexszámmá alakítja „1 8 12 0 13 3 14” számra.


Alt-kép és felirat : Egyszerű szöveg konvertálása indexszámozási értékké

Ezután alkalmazzuk az egyenlet számítását, és az eredmény a következőképpen jelenik meg:


Alt-kép és felirat : Affin titkosítás

Tehát a „BIMANDO” egyszerű szöveget affine titkosítással titkosítják a 7-es és 13-as kulccsal, ami az „URTNAIH”-t eredményezi.

Affin titkosítási titkosítás Python használatával

Tegyük fel, hogy egy csomó bekezdést tartalmazó bizalmas üzenetet szeretnénk küldeni. Az affin titkosítás kézi eljárással való végrehajtása sok erőfeszítést és időt vesz igénybe, és nagy az esélye annak, hogy a számítás elmarad, igaz? Ezért szükségünk van egy olyan programra, amely automatizálja az Affine Cipher titkosítási folyamatot. A Python program létrehozásának lépésenkénti folyamata a következő:

1. Importálja a szükséges könyvtárakat
Programunk a szükséges modulok importálásával kezdődik, mint például az argparse, a string és az os a parancssori argumentumelemzéshez, a karakterlánc-műveletekhez és az operációs rendszerrel kapcsolatos funkciókhoz.

import argparse
import húr
import te

2. Alphabet Mapping meghatározása
Ezután az ábécét kis angol betűkből álló sorozatként határozzuk meg. Ez a karakterek leképezésére szolgál később a titkosítási folyamat során.

ábécé = húr . ascii_lowercase

3. Affine rejtjelezési funkció
Ez programunk fő funkciója. Felveszi a beviteli szöveget és két kulcsot, az „a” és „b” kulcsot, és az affin titkosítást alkalmazza a szövegre, megőrizve a szöveg szerkezetét.

def affine_cipher_encryption ( szöveg , a , b ) :
titkosított_szöveg = ''
számára char ban ben szöveg:
ha char. Alsó ( ) ban ben ábécé:
ha char. isfelső ( ) :
titkosított_szöveg + = chr ( ( ( a * ( szó ( char. Alsó ( ) ) - 97 ) + b ) % 26 ) + 65 )
más :
titkosított_szöveg + = chr ( ( ( a * ( szó ( char ) - 97 ) + b ) % 26 ) + 97 )
más :

4. Feltételes főellenőrzés
Ebben a blokkkódban ellenőrizze, hogy főprogramként fut-e. Beállítja az argumentumelemzőt a szkript és argumentumai leírásával. A szükséges argumentum csak egy szövegfájl beviteli útvonala. Ha nem adjuk meg a kimeneti útvonalat, akkor azt szeretnénk, hogy az alapértelmezett értéket állítson be a bemeneti fájlnévre, amelyhez a „_encrypted” fűződik. A „kulcsok” argumentum esetében azt szeretnénk, hogy az „a,b” formátumú legyen. De ha beállítjuk, akkor az alapértelmezett 5 és 8.

ha __név__ == '__fő__' :
elemző = argparse. ArgumentParser ( leírás = 'Affine titkosítási titkosítás szöveges fájlból' )
elemző . add_argument ( 'bemeneti_fájl' , Segítség = 'A bemeneti szövegfájl elérési útja' )
elemző . add_argument ( '-k' , '--kulcsok' , típus = str , alapértelmezett = '5,8' , Segítség = 'Kulcsok az affin titkosítóhoz 'a,b' formátumban' )
args = elemző . parse_args ( )

a , b = térkép ( int , args. kulcsok . hasított ( ',' ) )

val vel nyisd ki ( args. bemeneti_fájl , 'r' ) mint fájlt :
szöveg = fájlt . olvas ( )

# Bontsa ki a fájlnevet a bemeneti fájl elérési útjából
bemeneti_fájlnév , kiterjesztés = te . pálya . osztott szöveg ( args. bemeneti_fájl )
alapértelmezett_kimeneti_fájl = bemeneti_fájlnév + '_titkosított' + kiterjesztés

# Titkosítsa a szöveget affin titkosítással
titkosított_szöveg = affine_cipher_encryption ( szöveg , a , b )

# Írja be a titkosított szöveget egy új fájlba
val vel nyisd ki ( alapértelmezett_kimeneti_fájl , 'Ban ben' ) mint fájlt :
fájlt . ír ( titkosított_szöveg )

Végül, ha a titkosítási funkció elkészült, programunk a kimenetet a bemeneti fájl kiterjesztésével menti el.

Most mentse el az „affine_cipher.py” fájlba. Most futtassa a programot a következő parancs beírásával:

python affine_cipher. py -h

Ha nem talál hibát, a kimenet a következő képhez hasonlóan néz ki:


Alt-kép és felirat : Affine Cipher Python program

Proof of Concept

Van egy bizalmas üzenetünk a következő „message.txt” névvel, és szeretnénk közvetíteni tagjainknak:


Alt-kép és felirat : Egyszerű szöveg

Tehát azt a programot használjuk, amelyet azelőtt hoztunk létre, hogy titkosítani akarnánk ezt az üzenetet Affine titkosítással a 3-as és 7-es kulccsal. A parancs a következő:

python affine_cipher. py üzenet. txt -k 3 , 7


Alt-kép és felirat : Affine Cipher Python program

A titkosított üzenetet egy szemvillanás sebességével sikeresen létrehozza és elmenti a „message_encrypted.txt” fájlba. Nézzük meg, hogyan néz ki az üzenet:


Alt-kép és felirat : Affin titkosított szöveg

Amint látja, az üzenet kódolt. Csak a titkosítási módszert és annak kulcsait ismerő tagjaink képesek visszafejteni az üzenetet.

Próbáld ki magad

Töltse le ezt a program forráskódját a GitHub oldalunkról a címen https://github.com/bimando/Affine-Cipher .

Következtetés

Összefoglalva, az Affine titkosítási módszer, a monoalfabetikus helyettesítő titkosítás egyik formája, két kulcs használatával fokozott biztonságot kínál, amely alapos megfontolást igényel a kulcsválasztás során. Az olyan fogalmak megértése, mint a legnagyobb közös osztó (GCD), a társprímszámok és a moduláris aritmetika elengedhetetlenek az affin titkosítás bonyolultságának megértéséhez.

Az affin titkosítási egyenlet, E(x) = (a.x + b) mod m, a titkosítás alapvető eszközeként szolgál, ahol az „a” és „b” a kulcsokat jelenti, az „x” pedig az egyszerű szöveges betű indexét szimbolizálja. Bebizonyosodott, hogy az Affine titkosítási folyamathoz egy automatizált Python program megvalósítása hatékonyan racionalizálja a nagyszabású titkosítási feladatokat. A program magában foglalja a legfontosabb funkciókat, beleértve a könyvtárak importálását, az ábécé-leképezést, a titkosítási funkciót és a parancssori argumentumelemzést a bemeneti és kimeneti útvonalakhoz. A szkript lehetővé teszi a kulcsok és a kimeneti fájlnevek alapértelmezett beállításait, hogy megkönnyítse a zökkenőmentes titkosítási folyamatot.

Gyakran Ismételt Kérdések (GYIK)

1. kérdés: Mi az affin titkosítás, és miben különbözik a Caesar-rejtjeltől?

1. válasz: Az affin titkosítás egy monoalfabetikus helyettesítő rejtjel, amely két kulcsot, „a” és „b” kulcsot használ a titkosításhoz. Ezzel szemben a Caesar-rejtjel három pozícióból álló rögzített eltolódást használ az egyszerű szöveg minden betűjéhez.

Q2. Milyen előfeltételei vannak az affin titkosítás megértésének?

2. válasz: Az affin titkosítás alapos megértéséhez elengedhetetlen az olyan fogalmak megértése, mint a legnagyobb közös osztó (GCD), a társprímszámok és a moduláris aritmetika.

3. kérdés: Hogyan titkosíthatok egy üzenetet a Python affin titkosításával?

3. válasz: Az Affine titkosítási folyamat automatizálásához használhatja a cikkben ismertetett Python programot. A program hatékonyan titkosítja a nagyméretű szövegbevitelt, leegyszerűsítve a titkosítási eljárást. A cikk lépésről lépésre ismerteti a könyvtárak importálását, az ábécé leképezés meghatározását, a titkosítási függvény létrehozását, valamint a bemeneti és kimeneti útvonalak parancssori argumentumainak elemzését.