【问题描述】
凯撒加密由于方法简单很容易破解,于是16世纪,法国亨利三世王朝的布莱瑟-维吉尼亚将凯撒密码做了推广,他引入了更复杂的密钥。
维吉尼亚加密使用的秘钥是一串文本,在加密时将明文的字符移动对应的密钥字符所给出的位数,得到经过更复杂加密过程的密文,具有更高的安全性。
【输入形式】
输入的第一个参数为一个字符串,即密钥,中间以一个分号";"分隔后,第二个参数为待加密明文。
【输出形式】
经过加密后的密文字符串。请注意,在分割字符串时调用split函数请以";"作为分隔符,即.split(";")。
【样例输入】
NUDT;Winter Holiday
【样例输出】
Jcqmrl Abflwns
【样例说明】
注意!!明文中空格也要占用一位密钥字符,但无须对空格字符加密。
key,s=input().split(';')
key=key.upper()
l=[ord(i)-ord('A') for i in key]
j=0
real=''
for i in s:
if i!=' ':
if i.islower():
t=ord(i)+l[j%4]
if t>ord('z'):
t=ord('a')-1+t%ord('z')
i=chr(t)
elif i.isupper():
t=ord(i)+l[j%4]
if t>ord('Z'):
t=ord('A')-1+t%ord('Z')
i=chr(t)
real+=i
j+=1
print(real)
key, s = input().split(';')
key = key.upper()
list1 = [ord(i) - ord('A') for i in key]
j = 0
real = ''
for i in s:
if i != ' ':
if i.islower():
t = ord(i) + list1[j % len(key)]
if t > ord('z'):
t = ord('a') - 1 + t % ord('z')
i = chr(t)
elif i.isupper():
t = ord(i) + list1[j % len(key)]
if t > ord('Z'):
t = ord('A') - 1 + t % ord('Z')
i = chr(t)
real += i
j += 1
print(real)