凯撒加密原理:
凯撒加密法,这种加密法曾在两千年前被凯撒大帝用过,主要用于加密通过信使传递的作战命令。它将字母表中的字母移动一定位置而实现加密。例如如果向右移动 8位,则 字母 A 将变为Q,字母 B 将变为R,…,字母 X 变成 N,字母 Y 则变为 O,字母 Z 变为 P。其中右移8位的,8就是加密密钥;
如何用程序实现:
把字母表的字母从A到Z写下来,在每个字母下面写下数字0到25。在A下面写0, B 下面写1,如此类推,直到在Z下面写25 (字母表里有26个字母,但我们的数字最多只到 25,因为我们从0而不是1开始的)。
现在,如果要加密,我们找到希望加密的字母下面的数字,然后把密钥数字加上去。这 个和就是加密的字母下面的数字。如,我们使用密钥13加密“Hello. How are you?”。首先, 我们找到H下面的数字,是7。接着,我们把密钥加上这个数字,7+13=20。数字20在字 母U下面,这意味着字母H加密成字母U。如果要加密字母E,我们把E下面的4加上13, 得到17。17上面的字母是R,因此E加密成R。如此类推。 直到我们遇上字母O时这个方法才会岀问题。O下面的数字是14,当把14加上13时, 我们得到27。但我们的数字列表最多只到25。如果字母的数字和密钥之和超过26,我们应 该减去26, 27-26得到1。数字1上面的字母是B。于是,当使用密钥13时,字母O加密 成字母B。 个接 个地,我们可以把“HELLO. HOW ARE YOU?”里的字母加密成“URYYB. UBJ NER LBH?”。
代码:
message = 'This is my secret message.'
#the encrypted/decrypted key
key = 8
#set to 'encrypt' or 'decrypted'
mode = 'encrypt'
#Encryption Strength 'H' or 'L'
strengthen = 'L'
if strengthen == 'L':
LETTERS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
else:
LETTERS = ' !"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~'
translated = ''
message = message.upper()
for symbol in message:
if symbol in LETTERS:
num = LETTERS.find(symbol)
if mode == 'encrypt':
num = num + key
elif mode == 'decrypt':
num = num - key
if num >= len(LETTERS):
num = num - len(LETTERS)
elif num < 0:
num = num + len(LETTERS)
translated = translated + LETTERS[num]
else:
translated = translated + symbol
print(translated)