Cryptography With Python 简明教程

Cryptography with Python - Caesar Cipher

在上一章中,我们已经处理了反向密码。本章详细介绍了凯撒密码。

Algorithm of Caesar Cipher

凯撒密码算法具有以下特征:

  1. * 凯撒密码技术是一种简单易用的加密技术。

  2. * 这是一种简单的替换密码。

  3. * 明文的每个字母都被一个字母替换,该字母在字母表中的位置向下移动固定数量。

    • 以下图表描述了凯撒密码算法实现的工作原理:

algorithm caesar cipher

凯撒密码算法的程序实现如下:

def encrypt(text,s):
result = ""
   # transverse the plain text
   for i in range(len(text)):
      char = text[i]
      # Encrypt uppercase characters in plain text

      if (char.isupper()):
         result += chr((ord(char) + s-65) % 26 + 65)
      # Encrypt lowercase characters in plain text
      else:
         result += chr((ord(char) + s - 97) % 26 + 97)
      return result
#check the above function
text = "CEASER CIPHER DEMO"
s = 4

print "Plain Text : " + text
print "Shift pattern : " + str(s)
print "Cipher: " + encrypt(text,s)

Output

你可以看到凯撒密码,即下图所示的输出−

caesar cipher

Explanation

一次遍历一个纯文本字符。

  1. 对于给定的纯文本中的每个字符,按照文本加密和解密的规则变换给定的字符。

  2. 在遵循这些步骤后,会生成一个新字符串,称为密文。

Hacking of Caesar Cipher Algorithm

密文可以用各种可能性破解。其中一种可能性是 Brute Force Technique, ,它涉及尝试每个可能的解密密钥。此技术不需要太多精力,对于黑客来说相对简单。

破解凯撒密码算法的程序实现如下−

message = 'GIEWIVrGMTLIVrHIQS' #encrypted message
LETTERS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'

for key in range(len(LETTERS)):
   translated = ''
   for symbol in message:
      if symbol in LETTERS:
         num = LETTERS.find(symbol)
         num = num - key
         if num < 0:
            num = num + len(LETTERS)
         translated = translated + LETTERS[num]
      else:
         translated = translated + symbol
print('Hacking key #%s: %s' % (key, translated))

考虑在前一示例中加密的密文。然后,使用密钥并使用暴力攻击技术,可能的破解方法的输出如下−

hacking caesar cipher