凯撒加密法学习笔记

#凯撒加密法只适用于26个字母的加密
#凯撒加密法是把26个字母把照0~25一一对应,然后把要加密的字母的索引号加上key后对应的字母输出
import pyperclip
message='this is my secret message.'

key=13#key=13,则加密和解密是同一套代码,因为序号是从0开始的
mode='encrypt'
LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
translated=''
message =message .upper()#把message的内容全部大写
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 += LETTERS[num]
else:
translated += symbol#如果不是英文字母,则返回原来字符串的内容
print(translated)
pyperclip .copy(translated )

#解密 1、在知道key值的情况下
import pyperclip
message='GUVF VF ZL FRPERG ZRFFNTR.'

key=13
mode='decrypt'
LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
translated=''
message =message .upper()
for symbol in message:
if symbol in LETTERS:
num = LETTERS.find(symbol) # get the number of the 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)
translated =translated .lower()
print(translated )
pyperclip .copy(translated )#把内容复制在粘贴板上

'''
GUVF VF ZL FRPERG ZRFFNTR.
THIS IS MY SECRET MESSAGE.
this is my secret message.
'''

#解密 2、在不知道key值的情况下
message ='GUVF VF ZL FRPERG ZRFFNTR.'
LETTERS ='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
for key in range(len(LETTERS ) ):
translated =''
for symbol in message :
if symbol in LETTERS :
num =LETTERS .find(symbol )-key
if num <0:
num =num+len(LETTERS )
translated +=LETTERS [num]
else:
translated +=symbol
translated =translated .lower()
print('key的序号#%s:%s'%(key,translated ))
'''
key的序号#0:guvf vf zl frperg zrffntr.
key的序号#1:ftue ue yk eqodqf yqeemsq.
key的序号#2:estd td xj dpncpe xpddlrp.
key的序号#3:drsc sc wi combod wocckqo.
key的序号#4:cqrb rb vh bnlanc vnbbjpn.
key的序号#5:bpqa qa ug amkzmb umaaiom.
key的序号#6:aopz pz tf zljyla tlzzhnl.
key的序号#7:znoy oy se ykixkz skyygmk.
key的序号#8:ymnx nx rd xjhwjy rjxxflj.
key的序号#9:xlmw mw qc wigvix qiwweki.
key的序号#10:wklv lv pb vhfuhw phvvdjh.
key的序号#11:vjku ku oa ugetgv oguucig.
key的序号#12:uijt jt nz tfdsfu nfttbhf.
key的序号#13:this is my secret message.
key的序号#14:sghr hr lx rdbqds ldrrzfd.
key的序号#15:rfgq gq kw qcapcr kcqqyec.
key的序号#16:qefp fp jv pbzobq jbppxdb.
key的序号#17:pdeo eo iu oaynap iaoowca.
key的序号#18:ocdn dn ht nzxmzo hznnvbz.
key的序号#19:nbcm cm gs mywlyn gymmuay.
key的序号#20:mabl bl fr lxvkxm fxlltzx.
key的序号#21:lzak ak eq kwujwl ewkksyw.
key的序号#22:kyzj zj dp jvtivk dvjjrxv.
key的序号#23:jxyi yi co iushuj cuiiqwu.
key的序号#24:iwxh xh bn htrgti bthhpvt.
key的序号#25:hvwg wg am gsqfsh asggous.
可见只有key的值是13时才是完整的句子
'''

猜你喜欢

转载自www.cnblogs.com/hua264/p/12945062.html