如何在字符串中旋转字符以加密消息

时间:2012-11-03 15:58:56

标签: python cryptography

我正试图和我的一个朋友玩,我们是特工,但我们怎么能成为特工而没有绝密的消息代码来互相沟通?

# txt = the secret message to convert!
# n = number of times to jump from original position of letter in ASCII code

def spy_code(txt,n):
    result = ''
    for i in txt:
        c = ord(i)+n
        if ord(i) != c:
            b = chr(c)
            result += b
    print result

spy_code('abord mission, dont atk teacher!',5)

在秘密消息中转换消息后,我们得到一行文字......

fgtwi%rnxxnts1%itsy%fyp%yjfhmjw&
问题是,我们希望实现这样的结果:

fgtwi rnxxnts, itsy fyp yjfhmjw!

仅考虑字母。

仅使用间谍代码转换字母,不转换空格或特殊符号。

2 个答案:

答案 0 :(得分:2)

一个简单的方法,使用GP89提示给你。

只需检查您当前的角色是否在信件列表中;否则只是按原样返回

import string

vals = string.letters
def spy_code(txt,n):
    result = ''
    for i in txt:
        if i in vals:
            c = ord(i)+n
            if ord(i) != c:
                b = chr(c)
                result += b
        else:
            result += i
    print result

spy_code('abord mission, dont atk teacher!',5)

返回

fgtwi rnxxnts, itsy fyp yjfhmjw!

答案 1 :(得分:0)

我现在已经过时了,但您可以使用str.isalpha()

s = 'Impending doom approaches!'
n = 6
result = ''

for c in s:
    result += chr(ord(c) + n) if c.isalpha() else c

print(result)
>>> Osvktjotm juus gvvxuginky!