Python中简单的凯撒密码加密代码
可能重复的问题:
使用Python的凯撒密码,能帮我一下吗
def affine (a, b):
for i in range(26):
print chr(i+65) + ": " + chr (((a*i+b)%26)+65)
我遇到了一些问题。我该如何用“Hello world”这个信息来加密呢?
还有,怎么解密一条信息呢?
1 个回答
0
一种可读性强、虽然有点长的方法是这样的:
def encript(message, offset):
result = ""
for letter in message:
if letter.isalpha():
new_letter = chr(ord(letter) + offset)
if (new_letter > "Z" and letter.isupper()) or (new_letter > "z" and letter.islower()):
new_letter = chr(ord(new_letter) - 26)
else:
new_letter = letter
result += new_letter
return result
而一个简洁的写法可以这样写:
>>> encript = lambda x, offset: "".join(chr(ord(le) + ((offset - (26 if (ord(le.upper()) + offset > ord("Z") ) else 0 ) ) if le.isalpha() else 0)) for le in x )
>>> encript("IBM 9000", -1)
'HAL 9000'