def encryption(message,skey):
encryptedmessage=''
for character in message:
if character.isalpha()==True:
if character==character.lower():
newchar=ord(character)-97
newchar=(newchar+skey)%26
encryptedmessage+= chr(newchar +97)
else:
newchar=ord(character)-65
newchar=(newchar+skey)%26
encryptedmessage+= chr(newchar +65)
else:
encryptedmessage+= character
return('Your Message is: {:s}'.format(encryptedmessage))
def decryption(message,skey):
decryptedmessage=''
for character in message:
if character.isalpha()==True:
if character==character.lower():
newchar=ord(character)-97
newchar=(newchar-skey)%26
decryptedmessage+= chr(newchar +97)
else:
newchar=ord(character)-65
newchar=(newchar-skey)%26
decryptedmessage+= chr(newchar +65)
else:
decryptedmessage+= character
return('Your Message is: {:s}'.format(decryptedmessage))
while True:
u=str(input("To encrypt a messege enter 'E' or 'e',To dycrypt a message enter 'D' or 'd',To stop the program enter'quit': "))
if u=='':
print("")
elif (u in 'Ee'):
Message1=str(input('Please enter your message: '))
key=int(input('Please enter the shifting key: '))
print(encryption(Message1,key))
elif (u in 'Dd'):
Message1=str(input('Please enter your message: '))
key=int(input('Please enter the shifting key: '))
print(decryption(Message1,key))
elif u=='quit':
print('Program ended.')
break;
Tags:
线路
newchar=(newchar-skey)%26
将字母移位skey值,然后返回模26。这样做是为了确保返回值始终是英文字母表中的一个字母。 在ASCII中,它们在65到90的范围内表示为大写字母,在97到122的范围内表示为小写字母(这些值分别在第10行和第6行中移到0到26的范围)。你知道吗
更改该数字将增加(或减少)脚本可以使用的字符范围,请参见:ASCII table
它不必是26,这样密文将使用(英文)字母字符来表示(英文)字母字符。
如果使用28,密文将使用a…z中的26个字符,“{”、“|”表示小写,使用a…z中的26个字符,“[”、“\”表示大写。两个区域都有28个字符,但其中26个字符仅在使用中,因此每个区域都有2个字符的间隔,其位置取决于您使用的实际“键”。这是你可以简单尝试的事情,不会有不好的事情发生。你知道吗
(*只要您的原始文本不包含编码字母表中引入的额外字符-但是如果包含,这些字符在解码后将成为字母)
相关问题 更多 >
编程相关推荐