在python中创建Ascii加密函数,建议?

在python中创建Ascii加密函数,建议?,python,python-3.x,encryption,ascii,Python,Python 3.x,Encryption,Ascii,我试图使用以下函数在Python中创建一个加密函数 def code_char(c, key): adj = ord('a') if c.islower() else ord('A') return chr(adj + (ord(c)-adj+int(key))%26) ^编码字符 def isletter(c): if 65 <= ord(c) <= 90: return True elif 97 <= ord(c) <

我试图使用以下函数在Python中创建一个加密函数

def code_char(c, key):
    adj = ord('a') if c.islower() else ord('A') 
    return chr(adj + (ord(c)-adj+int(key))%26)
^编码字符

def isletter(c):
    if 65 <= ord(c) <= 90:
        return True
    elif 97 <= ord(c) <= 122:
        return True
    else:
        return False
def仪表(c):

如果65做了一些改变…用
isleter

def isletter(c):
    if 65 <= ord(c) and ord(c) <= 90:
        return True
    elif 97 <= ord(c) and ord(c) <= 122:
        return True
    else:
        return False

您的问题在于
code\u char
当您添加
int(key)
时,您需要修改
%26
以确保字母保持ascii字符:

def code_char(c, key):
    adj = ord('a') if c.islower() else ord('A')
    return chr(adj + (ord(c)-adj+int(key))%26)
结果:

>>> encrypt("This is  a   secret  message!!", "12345678")
'Ujlw ny  h   afeuiy  slatcji!!'
当然,您可以改进代码,例如您的
code\u块
可以重写:

import itertools as it

def code_block(word, key):
    k = it.cycle(key)
    return "".join(code_char(c, next(k)) if isletter(c) else c for c in word)
您还可以重写您的
isleter()

您可以利用已定义以下内容的
字符串
模块:

import string
def isletter(c):
    return c in string.ascii_letters
最后,您的
encrypt()
不必要地创建了一个列表和
'.join()
,它只是:

def encrypt(s, key):   # string is a module - may clash
    return code_block(s, key)

注意:
如果这给出了无效的语法消息?它不在shell中,因为我按F5运行程序,一个窗口弹出,显示无效语法,第二个窗口突出显示为红色。有什么变化?当您添加字符和数字时,它们有可能变成非字母。我如何防止这种情况并使其返回到字母表的开头?我需要写下与
code\u char
现在
解码\u char
相反的内容,我是否要反转
code\u char
功能的符号?我正在尝试,但我尝试的任何东西都没有给我
这是一条秘密消息???只需
-int(键)
def isletter(c):
    return c in 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
import string
def isletter(c):
    return c in string.ascii_letters
def encrypt(s, key):   # string is a module - may clash
    return code_block(s, key)