#实现33-126ASCII能打印的字符循环平移
#和通常凯撒加密不同注意
def change(c,i):
num=ord(c)
if(num>=33 and num<=126):
num=33+(num+i-33)%(94)#126-33=93
return chr(num)
def kaisa_jiAmi(string,i):
string_new=''
for s in string:
string_new+=change(s,i)
print(string_new)
return string_new
#本题有种暴力解密感觉
def kaisa_jiEmi(string):
for i in range(0,94):
print('第'+str(i+1)+'种可能:',end=' ')
#区别在于 string 是该对象原本就是字符串类型, 而 str()则是将该对象转换成字符串类型。
kaisa_jiAmi(string,i)
#你要知道input输入的数据类型都是string
def main():
print('请输入操作,注意不是平常26种:')
choice=input('1:恺撒加密,2:凯撒穷举解密.请输入1或2:')
if choice=='1':
string=input('请输入需要加密字符串: ')
num=int(input('请输入需要加密的KEY: '))
kaisa_jiAmi(string,num)
elif choice=='2':
string=input('请输入需要解密字符串: ')
kaisa_jiEmi(string)
else:
print('输入错误,请重试')
main()
if __name__=='__main__':
main()
http://www.shiyanbar.com/ctf/1822
凯撒和某某加密
aZZg/x\ZbavpZiEZp+n)o+
解:
1.恺撒密码:明文所有字母都在字母表上向后(或向前)
按照一个固定数目进行偏移后被替换成密文。
通常凯撒列出26种(其实包括自身不变KEY=0)ascii表的字母凯撒移动
分析:aZZg/x\ZbavpZiEZp+