Python Kullanarak Afin Şifreleme Şifrelemesi

Python Kullanarak Afin Sifreleme Sifrelemesi



İçeriğin Konusu:

  1. giriiş
  2. Önkoşul Bilgisi
  3. Afin Şifre Denklemi
  4. Python Kullanarak Afin Şifreleme Şifrelemesi
  5. Kavramın ispatı
  6. Çözüm
  7. Sıkça Sorulan Sorular (SSS)

Afin şifresi, monoalfabetik şifreler kategorisine giren özel bir tür ikame şifresini temsil eder. Düz metindeki her harfi sabit üç konum sayısına göre kaydıran daha ünlü Sezar şifresinin aksine, Affin şifresi iki anahtar (a ve b) kullanır. Anahtarların seçimi özel dikkat gerektirmelidir.

Önkoşul Bilgisi

Bugünün konusunu derinlemesine anlamak için aşağıdaki kavramları anlamalısınız:







  • En Büyük Ortak Bölen (GCD) ve Eş Asal Sayı
  • Modüler aritmetik

Bu kavramlar bir önceki “Afin Şifreleme Matematiksel Yaklaşımı” başlıklı makalede detaylı olarak anlatılmıştır.



Afin Şifre Denklemi

Afine şifre şifreleme formülüyle başlayalım:



E(x) = (a.x + b) mod m
Önceki) X alfabetik dizininin Şifrelenmesini belirtir
A 'Özel' ilk anahtarın indeks değeri
X Düz harfin indeks değeri
B İkinci anahtarın indeks değeri (ek kaydırma değeri)
mod m Toplam 26 adet olan alfabenin modülo işlemleri


Alternatif resim ve başlık : Afin Şifre Denklemi





Örneğin “BIMANDO” düz metnini 7 ve 13 tuşlarıyla şifrelemek istiyoruz. Aşağıdaki tablo indeksini kullanarak ilk önce düz metni karşılık gelen sayıya dönüştürüyoruz:


Alternatif resim ve başlık : Dizin Numaralandırma



“BIMANDO” düz metni “1 8 12 0 13 3 14” şeklinde bir indeksleme numarasına dönüştürülür.


Alternatif resim ve başlık : Düz Metni Dizin Numaralandırma Değerine Dönüştürme

Daha sonra denklem hesaplamasını uyguluyoruz ve sonuç aşağıdaki gibi gösteriliyor:


Alternatif resim ve başlık : Afin Şifreleme

Yani, “BIMANDO” düz metni, 7 ve 13 numaralı anahtarlarla Affine şifresi kullanılarak şifrelenir ve bu da “URTNAIH” ile sonuçlanır.

Python Kullanarak Afin Şifreleme Şifrelemesi

Şimdi diyelim ki bir sürü paragraftan oluşan gizli bir mesaj göndermek istiyoruz. Affine şifre şifrelemesini manuel işlemle yapmak çok fazla çaba ve zaman gerektirir ve hesaplamayı kaçırma ihtimali yüksektir, değil mi? Bu nedenle Affine Cipher şifreleme işlemini otomatikleştiren bir programa ihtiyacımız var. Bir Python programı oluşturmak için adım adım süreç aşağıdadır:

1. Gerekli Kitaplıkları İçe Aktarın
Programımız, komut satırı argüman ayrıştırma, dize işlemleri ve işletim sistemiyle ilgili işlevsellik için sırasıyla argparse, string ve os gibi gerekli modülleri içe aktararak başlar.

içe aktarmak argparse
içe aktarmak sicim
içe aktarmak Sen

2. Alfabe Eşlemesinin Tanımlanması
Daha sonra alfabeyi küçük İngilizce harflerden oluşan bir dizi olarak tanımlıyoruz. Bu, daha sonra şifreleme işlemi sırasında karakterleri eşlemek için kullanılır.

alfabe = sicim . ascii_küçük harf

3. Afin Şifre Şifreleme İşlevi
Bu, programımızın temel işlevidir. Giriş metnini ve 'a' ve 'b' olmak üzere iki anahtarı alır ve metne Afin şifre şifrelemesini uygulayarak metnin yapısını korur.

kesinlikle affine_cipher_encryption ( metin , A , B ) :
şifrelenmiş_metin = ''
için karakter içinde metin:
eğer karakter. daha düşük ( ) içinde alfabe:
eğer karakter. akşam yemeği ( ) :
şifrelenmiş_metin + = saat ( ( ( A * ( kelime ( karakter. daha düşük ( ) ) - 97 ) + b ) % 26 ) + 65 )
başka :
şifrelenmiş_metin + = saat ( ( ( A * ( kelime ( karakter ) - 97 ) + b ) % 26 ) + 97 )
başka :

4. Koşullu Ana Kontrol
Bu blok kodunda ana program olarak yürütülüp yürütülmediğini kontrol edin. Argüman ayrıştırıcısını, komut dosyası ve argümanları için açıklamalarla birlikte ayarlar. Gerekli argüman yalnızca bir metin dosyası girişinin yoludur. Çıkış yolunu belirtmediğimizde, giriş dosyası adına '_encrypted' eklenmiş bir varsayılan değer ayarlamasını isteriz. “Anahtarlar” argümanının “a,b” olarak biçimlendirilmesini istiyoruz. Ama ayarlarsak varsayılan 5 ve 8 olur.

eğer __isim__ == '__ana__' :
ayrıştırıcı = argparse. Argüman Ayrıştırıcı ( Tanım = 'Bir metin dosyasından Afin Şifreleme Şifrelemesi' )
ayrıştırıcı . add_argument ( 'giriş dosyası' , yardım = 'Giriş metin dosyasının yolu' )
ayrıştırıcı . add_argument ( '-k' , '--anahtarlar' , tip = cadde , varsayılan = '5.8' , yardım = 'Afin Şifresi için 'a,b' formatındaki anahtarlar' )
argümanlar = ayrıştırıcı . ayrıştırma_args ( )

A , B = harita ( int , args. anahtarlar . bölmek ( ',' ) )

ile açık ( args. giriş dosyası , 'R' ) gibi dosya :
metin = dosya . Okumak ( )

# Dosya adını giriş dosyası yolundan çıkarın
giriş_dosyasıadı , eklenti = Sen . yol . bölünmüş metin ( args. giriş dosyası )
default_output_file = girdi_dosyaadı + '_şifrelenmiş' + uzantı

# Afin şifreyi kullanarak metni şifreleyin
şifrelenmiş_metin = affine_cipher_encryption ( metin , A , B )

# Şifrelenmiş metni yeni bir dosyaya yaz
ile açık ( default_output_file , 'İçinde' ) gibi dosya :
dosya . yazmak ( şifrelenmiş_metin )

Son olarak şifreleme fonksiyonu tamamlandıktan sonra programımız çıktıyı giriş dosyasıyla aynı dosya uzantısıyla kaydedecektir.

Şimdi bunu “affine_cipher.py” dosyasına kaydedin. Şimdi aşağıdaki komutu yazarak programı çalıştırın:

python affine_cipher. py -H

Herhangi bir hata bulamazsanız çıktı aşağıdaki görüntüye benzer:


Alternatif resim ve başlık : Afine Şifreleme Python Programı

Kavramın ispatı

Aşağıdaki “message.txt” isimli gizli bir mesajımız var ve bunu üyelerimize yayınlamak istiyoruz:


Alternatif resim ve başlık : Düz metin

Yani bu mesajı 3 ve 7 tuşlarıyla Affin şifresini kullanarak şifrelemek istediğimizde daha önce oluşturduğumuz programı kullanıyoruz. Komut aşağıdaki gibidir:

python affine_cipher. py İleti. txt -k 3 , 7


Alternatif resim ve başlık : Afine Şifreleme Python Programı

Şifrelenmiş mesaj göz açıp kapayıncaya kadar başarıyla oluşturulur ve “message_encrypted.txt” dosyasına kaydedilir. Mesajın nasıl göründüğünü kontrol edelim:


Alternatif resim ve başlık : Afin Şifreli Metin

Gördüğünüz gibi mesaj karışık. Sadece şifreleme yöntemini ve anahtarlarını bilen üyelerimiz mesajın şifresini çözebilmektedir.

Kendin dene

Bu programın kaynak kodunu GitHub sayfamızdan indirin: https://github.com/bimando/Affine-Cipher .

Çözüm

Sonuç olarak, monoalfabetik ikame şifresinin bir biçimi olan Affin şifre şifreleme yöntemi, iki anahtarın kullanımı yoluyla gelişmiş güvenlik sunar ve anahtar seçimi sırasında dikkatli bir değerlendirme gerektirir. En Büyük Ortak Bölen (GCD), eş asal sayılar ve modüler aritmetik gibi kavramları anlamak, Affine şifresinin inceliklerini kavramak için çok önemlidir.

Afin şifre denklemi, E(x) = (a.x + b) mod m, şifreleme için temel araç görevi görür; burada 'a' ve 'b' anahtarları temsil eder ve 'x' düz metin harfinin indeksini sembolize eder. Affine şifre şifreleme işlemi için otomatik bir Python programının uygulanmasının, büyük ölçekli şifreleme görevlerini verimli bir şekilde kolaylaştırdığı gösterilmiştir. Program, kitaplıkların içe aktarımı, alfabe eşleme, şifreleme işlevi ve giriş ve çıkış yolları için komut satırı argümanı ayrıştırma gibi temel işlevleri içerir. Özellikle, komut dosyası, sorunsuz bir şifreleme işlemini kolaylaştırmak için anahtarlar ve çıktı dosyası adları için varsayılan ayarları etkinleştirir.

Sıkça Sorulan Sorular (SSS)

S1: Affin şifresi nedir ve Sezar şifresinden farkı nedir?

Cevap1: Afin şifresi, şifreleme için 'a' ve 'b' olmak üzere iki anahtar kullanan bir tür monoalfabetik ikame şifresidir. Buna karşılık Sezar şifresi, düz metindeki her harf için üç konumun sabit bir değişimini kullanır.

Q2. Affin şifresini anlamanın önkoşulları nelerdir?

Cevap2: Afin şifresini iyice kavramak için En Büyük Ortak Bölen (GCD), eş asal sayılar ve modüler aritmetik gibi kavramları kavramak çok önemlidir.

S3: Python'da Affin şifresini kullanarak bir mesajı nasıl şifreleyebilirim?

Cevap3: Affine şifre şifreleme işlemini otomatikleştirmek için makalede anlatılan Python programını kullanabilirsiniz. Program, büyük ölçekli metin girişlerini verimli bir şekilde şifreleyerek şifreleme prosedürünü basitleştirir. Makale, kitaplıkları içe aktarma, alfabe eşlemesini tanımlama, şifreleme işlevini oluşturma ve giriş ve çıkış yolları için komut satırı bağımsız değişkenlerini ayrıştırma konusunda adım adım talimatlar sağlar.