当去根据偏移量获取加解密的结果,我们需要从1-25的遍历加解密,太懒了
看线上的,很多是要改偏移量才能给结果,太懒了,不想动,能不能快点。
直接上码
26个字母双份了,因为当被加解密的字符和偏移量的相加后的和大于26时,也就是超出26个字符表,
单个26个字符表没法加解密出结果。所有双份字母表就解决了这个偏移量超出的问题。
'''
凯撒密码加解密
FRPHEVGL
ComeChina
'''
upperCaseStr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ'
lowerCaseStr = 'abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz'
caseStr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz'
def caesar_cipher(inputStr,offset=0):
result_list = []
if offset == 0: # 不指定偏移量,需要遍历1-26
for j in range(1,26):
result_str = ''
for i in inputStr:
char_index = caseStr.index(i) # 获取字符下标
char_str = caseStr[char_index + j] # 偏移后的字符
result_str = result_str + char_str
result_str = f'加密后字符:{result_str},偏移量:{j}'
result_list.append(result_str)
if offset > 0: # 指定偏移量,直接加解密
result_str = ''
for i in inputStr:
char_index = caseStr.index(i) # 获取字符下标
char_str = caseStr[char_index+offset] # 偏移后的字符
result_str = result_str+char_str
result_str = f'加密后字符:{result_str},偏移量:{offset}'
result_list.append(result_str)
return result_list
print(caesar_cipher('FRPHEVGL',13)) # 指定偏移量=13
print(caesar_cipher('ComeChina',13)) # 指定偏移量=13
print(caesar_cipher('FRPHEVGL')) # 不指定偏移量,会遍历的