Innholdsemne:
- Introduksjon
- Forutsetningskunnskap
- Affin chifferligning
- Affine chifferkryptering ved hjelp av Python
- Proof of Concept
- Konklusjon
- Ofte stilte spørsmål (FAQs)
Affine-chifferet representerer en spesifikk type substitusjons-chiffer, som faller inn under kategorien monoalfabetiske siffer. I motsetning til det mer berømte Cæsar-chifferet, som forskyver hver bokstav i klartekst med et fast tre antall posisjoner, bruker Affine-chifferet to nøkler (a og b). Valg av nøkler bør kreve spesiell vurdering.
Forutsetningskunnskap
For å forstå dagens emne dypt, må du forstå følgende konsepter:
- The Greatest Common Divisor (GCD) og co-primtall
- Modulær aritmetikk
Disse begrepene er forklart i detalj i den forrige artikkelen med tittelen 'Affine Cipher Mathematical Approach'.
Affin chifferligning
La oss begynne med formelen for Affine-chifferkryptering:
E(x) = (a.x + b) mod m | |
---|---|
Tidligere) | Angir en kryptering av x-alfabetisk indeks |
en | En indeksverdi for den 'spesielle' første nøkkelen |
x | En indeksverdi for den vanlige bokstaven |
b | En indeksverdi for den andre nøkkelen (ekstra skiftverdi) |
mod m | Modulo-operasjonene for den totale mengden av alfabetet som er 26 |
Alt-bilde og bildetekst : Affin chifferligning
For eksempel ønsker vi å kryptere «BIMANDO»-klarteksten med 7 og 13 nøkler. Ved å bruke følgende tabellindeks konverterer vi først klarteksten til dets tilsvarende nummer:
Alt-bilde og bildetekst : Indeksnummerering
'BIMANDO'-klarteksten konverteres til et indekseringsnummer til '1 8 12 0 13 3 14'.
Alt-bilde og bildetekst : Konverter en ren tekst til en indeksnummereringsverdi
Deretter bruker vi ligningsberegningen, og resultatet vises som følger:
Alt-bilde og bildetekst : Affin kryptering
Så 'BIMANDO'-klarteksten er kryptert med Affine-chiffer med nøkler 7 og 13 som resulterer i 'URTNAIH'.
Affine chifferkryptering ved hjelp av Python
La oss nå si at vi vil sende en konfidensiell melding som inneholder en haug med avsnitt. Å utføre Affine-kryptering med den manuelle prosessen tar mye krefter og tid, og har stor sjanse for feilberegning, ikke sant? Derfor trenger vi et program som automatiserer Affine Cipher-krypteringsprosessen. Følgende er trinn-for-trinn-prosessen for å lage et Python-program:
1. Importer de nødvendige bibliotekene
Programmet vårt begynner med å importere de nødvendige modulene som argparse, streng og os for henholdsvis kommandolinjeparsing av argumenter, strengoperasjoner og operativsystemrelatert funksjonalitet.
import streng
import du
2. Definere alfabetkartlegging
Deretter definerer vi alfabetet som en streng med små engelske bokstaver. Dette brukes til å kartlegge tegnene under krypteringsprosessen senere.
3. Affine chifferkrypteringsfunksjon
Dette er kjernefunksjonen til programmet vårt. Den tar inn teksten og to nøkler, 'a' og 'b', og bruker Affine-kryptering på teksten, og bevarer tekstens struktur.
kryptert_tekst = ''
til røye i tekst:
hvis røye. Nedre ( ) i alfabet:
hvis røye. isopper ( ) :
kryptert_tekst + = chr ( ( ( en * ( ord ( røye. Nedre ( ) ) - 97 ) + b ) % 26 ) + 65 )
ellers :
kryptert_tekst + = chr ( ( ( en * ( ord ( røye ) - 97 ) + b ) % 26 ) + 97 )
ellers :
4. Betinget hovedkontroll
I denne blokkkoden, sjekk om den kjøres som hovedprogrammet. Den setter opp argumentparseren med beskrivelser for skriptet og dets argumenter. Det nødvendige argumentet er bare en bane til en tekstfil. Når vi ikke spesifiserer utdatabanen, vil vi at den skal sette en standard til inndatafilnavnet med '_encrypted' lagt til. For 'nøkler'-argumentet vil vi at det skal formateres til 'a,b'. Men hvis vi setter det, er standard 5 og 8.
parser = argparse. ArgumentParser ( beskrivelse = 'Affine chifferkryptering fra en tekstfil' )
parser . add_argument ( 'input_file' , hjelp = 'Bi til inndatatekstfilen' )
parser . add_argument ( '-k' , '--nøkler' , type = str , misligholde = '5,8' , hjelp = 'Nøkler for Affine Cipher i formatet 'a,b'' )
args = parser . parse_args ( )
en , b = kart ( int , args. nøkler . dele ( ',' ) )
med åpen ( args. input_file , 'r' ) som fil :
tekst = fil . lese ( )
# Trekk ut filnavnet fra inndatafilbanen
input_filename , Utvidelse = du . sti . splitext ( args. input_file )
default_output_file = input_filename + '_encrypted' + utvidelse
# Krypter teksten ved å bruke den affine chifferen
kryptert_tekst = affine_cipher_encryption ( tekst , en , b )
# Skriv den krypterte teksten til en ny fil
med åpen ( default_output_file , 'I' ) som fil :
fil . skrive ( kryptert_tekst )
Til slutt, når krypteringsfunksjonen er ferdig, vil programmet vårt lagre utdataene med samme filtype som inndatafilen.
Lagre den nå til 'affine_cipher.py'. Kjør programmet nå ved å skrive følgende kommando:
python affine_cipher. py -hHvis du ikke finner noen feil, ser utdataene ut som følgende bilde:
Alt-bilde og bildetekst : Affine Cipher Python-program
Proof of Concept
Vi har en konfidensiell melding med følgende «message.txt»-navn, og vi ønsker å kringkaste den til våre medlemmer:
Alt-bilde og bildetekst : Klartekst
Så vi bruker programmet som vi opprettet før vi ønsker å kryptere denne meldingen med Affine-chiffer med nøklene 3 og 7. Kommandoen er som følger:
python affine_cipher. py beskjed. tekst -k 3 , 7
Alt-bilde og bildetekst : Affine Cipher Python-program
Med et øyeblikks hastighet blir den krypterte meldingen opprettet og lagret i 'message_encrypted.txt'. La oss sjekke hvordan meldingen ser ut:
Alt-bilde og bildetekst : Affin chiffertekst
Som du kan se, er meldingen kryptert. Bare våre medlemmer som kjenner chiffermetoden og dens nøkler kan dekryptere meldingen.
Prøv det selv
Last ned denne programkildekoden på vår GitHub-side på https://github.com/bimando/Affine-Cipher .
Konklusjon
Avslutningsvis tilbyr Affine-krypteringsmetoden, en form for monoalfabetisk substitusjons-chiffer, forbedret sikkerhet gjennom bruk av to nøkler, noe som krever en nøye vurdering under nøkkelvalg. Å forstå konseptene som Greatest Common Divisor (GCD), co-primtall og modulær aritmetikk er avgjørende for å forstå vanskelighetene til Affine-chifferet.
Affine chifferligningen, E(x) = (a.x + b) mod m, fungerer som det grunnleggende verktøyet for kryptering der 'a' og 'b' representerer nøklene og 'x' symboliserer rentekstbokstavens indeks. Implementeringen av et automatisert Python-program for Affine-krypteringsprosessen ble demonstrert for å effektivisere de store krypteringsoppgavene effektivt. Programmet inneholder nøkkelfunksjonene, inkludert import av biblioteker, alfabetkartlegging, en krypteringsfunksjon og kommandolinjeargumentparsing for inngangs- og utgangsbaner. Spesielt aktiverer skriptet standardinnstillingene for nøklene og utdatafilnavnene for å lette en sømløs krypteringsprosess.
Ofte stilte spørsmål (FAQs)
Q1: Hva er Affine-chifferet og hvordan skiller det seg fra Cæsar-chifferet?
A1: Affine-chifferet er en type monoalfabetisk substitusjons-chiffer som bruker to nøkler, 'a' og 'b', for kryptering. I motsetning til dette bruker Cæsar-chifferet et fast skifte på tre posisjoner for hver bokstav i klarteksten.
Q2. Hva er forutsetningene for å forstå Affine-chifferet?
A2: For å forstå Affine-chifferet grundig, er det avgjørende å ha forståelse for konsepter som Greatest Common Divisor (GCD), co-primtall og modulær aritmetikk.
Q3: Hvordan kan jeg kryptere en melding ved å bruke Affine-chifferet i Python?
A3: For å automatisere Affine-chifferkrypteringsprosessen, kan du bruke Python-programmet som er skissert i artikkelen. Programmet krypterer effektivt tekstinndata i stor skala, og forenkler krypteringsprosedyren. Artikkelen gir trinnvise instruksjoner om å importere bibliotekene, definere alfabetkartleggingen, lage krypteringsfunksjonen og analysere kommandolinjeargumentene for inngangs- og utdatabaner.