Python 密码学 - 凯撒密码
在上一章中,我们讨论了反向密码。 本章详细介绍凯撒密码。
凯撒密码算法
凯撒密码算法具有以下特点 −
凯撒密码技术是一种简单易行的加密技术。
它是简单类型的替换密码。
纯文本中的每个字母都被替换为字母表中具有固定位置数的字母。
下图描述了凯撒密码算法实现的工作原理 −
凯撒密码算法的程序实现如下 −
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)
输出
可以看到凯撒密码,也就是下图所示的输出 −
说明
纯文本字符一次遍历一个。
对于给定的明文中的每个字符,根据文本加解密过程的规则,对给定的字符进行变换。
执行这些步骤后,将生成一个新的字符串,称为密文。
破解凯撒密码算法
密文被破解的可能性有多种。 其中一种可能性是暴力破解技术,它涉及尝试所有可能的解密密钥。 这种技术不需要太多努力,对于黑客来说相对简单。
破解凯撒密码算法的程序实现如下 −
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))
考虑在前面的示例中加密的密文。 然后,使用密钥和使用暴力破解技术的黑客,可能的攻击方法输出如下 −