第一步:换位加密。将明文字符串首尾相接围成一圈,从第一个字符开始计数,计数到m时相应的字符出圈,然后从下一个字符重新计数,直到最后圈中的字符全部出圈。出圈的序列就是该换位加密后的密文。例如明文“abY82?”,密钥m=4,按照上述规则得到的密文为“8baY?2”。
第二步:替代加密。将第一步得到的密文中的大小写字母和数字进行加密,密文字符由正常顺序的字母表或数字表右移m个位置替换得到。例如当m=4时,替换情况如第16题图所示。当m=4时,“8baY?2”经过处理后的密文为“2feC?6”。
mingwen=input ("请输入明文:")
m=int (input("请输入密钥:"))
q=[’’]*1000
miwen=""
n=len (mingwen)
for i in range(n):
q[i]=mingwen[i]
head, tail=0, n
i, s=1, 0
while i<=n:
tmp=q[head]; head+=1
s+=1
if :
miwen+=tmp
i+=1
s=0
else:
tail+=1
ans=""
for i in miwen:
if i>="A" and i<="Z"
x=chr((ord(i)-65+m)%26+65) #大写字母A的ASCII码为65
elif i>="a" and i<="z":
x=chr((ord(i)-97+m)%26+97) #小写字母a的ASCII码为97
elif i>="0" and i<="9":
#数字字符0的ASCII码为48
else:
x=i
ans+=x
print (ans)