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))
考虑前面示例中加密的密文。然后,使用密钥和暴力破解技术,可能的破解方法的输出如下:
广告