首頁 > 軟體

Python密碼學仿射密碼及攻擊單字母密碼教學

2022-05-24 14:01:15

仿射密碼

Affine Cipher是Multiplicative Cipher和Caesar Cipher演演算法的組合.

仿射密碼的基本實現如下圖所示 :

我們將通過建立包含兩個加密和解密基本函數的相應類來實現仿射密碼.

程式碼

您可以使用以下程式碼實現仿射密碼 :

 class仿射(物件):
 DIE = 128 
 KEY =(7,3,55)
 def __init __(self):
#傳遞
 def encryptChar(self,char):
 K1,K2, kI = self.KEY 
 return chr((K1 * ord(char)+ K2)%self.DIE)
 def encrypt(self,string):
 return"" .join(map(self.encryptChar,string))
 def decryptChar(self,char):
 K1,K2,KI = self.KEY 
 return chr(KI * (ord(char) -  K2)%self.DIE)
 def decrypt(self,string):
 return"".join(map(self.decryptChar,string))
 affine = Affine()
 print affine.encrypt(' Affine Cipher')
 print affine.decrypt('* 18?FMT')

輸出

實現仿射密碼時,可以觀察到以下輸出;

輸出顯示純文字訊息仿射密碼的加密訊息和已作為輸入 abcdefg傳送的訊息的解密訊息.

單字母密碼

接下來,您將學習使用Python的單字母密碼及其駭客攻擊.

單字母密碼使用固定替換用於加密整個訊息.這裡顯示使用帶有JSON物件的Python字典的單字母密碼 :

monoalpha_cipher = {
   'a': 'm',
   'b': 'n',
   'c': 'b',
   'd': 'v',
   'e': 'c',
   'f': 'x',
   'g': 'z',
   'h': 'a',
   'i': 's',
   'j': 'd',
   'k': 'f',
   'l': 'g',
   'm': 'h',
   'n': 'j',
   'o': 'k',
   'p': 'l',
   'q': 'p',
   'r': 'o',
   's': 'i',
   't': 'u',
   'u': 'y',
   'v': 't',
   'w': 'r',
   'x': 'e',
   'y': 'w',
   'z': 'q',
' ': ' ',
}

藉助此詞典,我們可以使用相關字母加密字母為JSON物件中的值.

以下程式建立一個單字母程式作為類表示,其中包括加密和解密的所有功能.

from string import letters, digits
from random import shuffle
def random_monoalpha_cipher(pool = None):
   if pool is None:
      pool = letters + digits
   original_pool = list(pool)
   shuffled_pool = list(pool)
   shuffle(shuffled_pool)
   return dict(zip(original_pool, shuffled_pool))
def inverse_monoalpha_cipher(monoalpha_cipher):
   inverse_monoalpha = {}
   for key, value in monoalpha_cipher.iteritems():
      inverse_monoalpha[value] = key
   return inverse_monoalpha
def encrypt_with_monoalpha(message, monoalpha_cipher):
   encrypted_message = []
   for letter in message:
      encrypted_message.append(monoalpha_cipher.get(letter, letter))
   return ''.join(encrypted_message)
def decrypt_with_monoalpha(encrypted_message, monoalpha_cipher):
   return encrypt_with_monoalpha(
      encrypted_message,
      inverse_monoalpha_cipher(monoalpha_cipher)
   )

稍後呼叫此檔案以實現Monoalphabetic密碼的加密和解密過程,如下所示 :

import monoalphabeticCipher as mc
cipher = mc.random_monoalpha_cipher()
print(cipher)
encrypted = mc.encrypt_with_monoalpha('Hello all you hackers out there!', cipher)
decrypted = mc.decrypt_with_monoalpha('sXGGt SGG Nt0 HSrLXFC t0U UHXFX!', cipher)
print(encrypted)
print(decrypted)

輸出

當您實現上面給出的程式碼時,您可以觀察到以下輸出;

T嗯,你可以用一個指定的鍵值對來破解單字母密碼,這會將密文破解成實際的純文字.

以上就是Python密碼學仿射密碼及攻擊單字母密碼教學的詳細內容,更多關於Python仿射攻擊單字母密碼的資料請關注it145.com其它相關文章!


IT145.com E-mail:sddin#qq.com