Affine chifferkryptering ved hjelp av Python

Affine Chifferkryptering Ved Hjelp Av Python



Innholdsemne:

  1. Introduksjon
  2. Forutsetningskunnskap
  3. Affin chifferligning
  4. Affine chifferkryptering ved hjelp av Python
  5. Proof of Concept
  6. Konklusjon
  7. 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 argparse
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.

alfabet = streng . ascii_små bokstaver

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.

def affine_cipher_encryption ( tekst , en , b ) :
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.

hvis __Navn__ == '__hoved__' :
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 -h

Hvis 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.