userPhrase = input('Enter a single word phrase to be encrypted: ')
userPhrase = userPhrase.lower()
key = int(input('Enter a key: '))
encryptedPhrase = ''
for character in userPhrase:
x = ord(character) - 97
x += key
x = x % 26
encryptedPhrase += chr(x + 97)
print('Encrypted phrase is ' + encryptedPhrase)
我在上面写了一个简单的加密程序,主要是根据在线指南编写的,但是我读过的所有材料都没有充分解释为什么加密字符的ASCII值被a(97)的ASCII值减去/减少。正如这句话:
x = ord(character) - 97
任何解释都很好,提前谢谢
在ASCII中,小写字母
a-z
从点ord('a') == 97
开始。因此,ord(character) - 97
将a-z
映射到整数范围0...25
您的加密是凯撒密码,然后将该范围向右移动值
key
,由于x = x % 26
而环绕。例如,如果key
是5,0
映射到5
,20
映射到25
,21
映射到0
,等等将修改后的字母表转换回ASCII字符,需要为
ord('a')
添加回代码点,因此chr(x + 97)
相关问题 更多 >
编程相关推荐