凯撒密码及其Python实现
主要内容:
- import语句
- 常量
- upper()字符串方法
- for循环
- if、elif和else语句
- in和not in语句
- find()字符串方法
2.1 实现程序
- 凯撒加密算法的密钥是0到25的整数
2.2凯撒加密算法的源代码
# Caesar Cipher
# Source code for caesarCipher
import pyperclip
# the string to be encrypted or decrypted
message = 'This is my secret message.'
# the encryption or decryted key
key = 13
# tells the program to encrypt or decrypt
mode = 'encrypt' # set to 'encrypt' or 'decrypt'
# every possible symbol that can be encrypted
LETTERS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
# stores the encrypted/decrypted form of the message
translated = ' '
# capitalize the string in message
message = message.upper()
# run the encryption/decryption code on each symbol in the message strring
for symbol in message:
if symbol in LETTERS:
# get the encryption(or decryption) number for this symbol
num = LETTERS.find(symbol) # get the number of the symbol
if mode == 'encrypt':
num = num + key
elif mode == 'decrypt':
num = num - key
# handle the wrap-around if num is larger than the length of
# LETTERS or less than 0
if num >= len(LETTERS):
num = num - len(LETTERS)
elif num < 0:
num = num + len(LETTERS)
# add encryption/decryption number's symbol at the end of translated
translated = translated + LETTERS[num]
else:
# just add the symbol without encrypting/decrypting
translated = translated + symbol
# print the encrypted/decrypted string to the screen
print(translated)
# copy the encrypted/decrypyed string to the screen
pyperclip.copy(translated)
2.3 运行凯撒加密法程序
执行程序时,输出结果为: GUVF VF ZL FRPERG ZRFFNTR.
解密时,把这行文字粘贴为新值,保存到第7行的message变量。然后修改第13行的赋值语句,在mode变量里保存’decrypt’字符串:
# the string to be encrypted or decrypted
message = 'GUVF VF ZL FRPERG ZRFFNTR.'
# the encryption or decryted key
key = 13