📅  最后修改于: 2020-11-08 08:31:49             🧑  作者: Mango
在上一章中,我们讨论了反向密码。本章详细讨论凯撒密码。
凯撒密码算法具有以下特征-
凯撒密码技术是一种简单易用的加密技术。
它是替代密码的简单类型。
每个纯文本字母都由一个固定位置的字母替换为一个字母。
下图描述了Caesar密码算法实现的工作-
Caesar密码算法的程序实现如下-
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)
您可以看到凯撒密码,即下图所示的输出-
一次遍历一个纯文本字符。
对于给定纯文本中的每个字符,根据文本的加密和解密过程,按照规则转换给定字符。
执行完这些步骤后,将生成一个新字符串,称为密文。
密文可以有多种可能性。这种可能性之一就是蛮力技术,它涉及尝试每个可能的解密密钥。该技术不需要太多的努力,并且对于黑客而言相对简单。
破解Caesar密码算法的程序实现如下-
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))
考虑上一个示例中加密的密文。然后,使用密钥和可能的黑客方法以及蛮力攻击技术的输出如下-