You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用加密密钥替换序列字符?Python加密程序开发求助

字符替换加密程序实现方案

问题描述

正在开发一个小型加密程序,需求是让用户输入语句或序列后,程序将序列中的每个字母、数字、符号替换为对应的加密密钥,目前已编写部分代码,但不清楚后续实现方法。代码如下:

A = '@'
B = '`'
C = ':'
D = '$'
E = '%'
F = '^'
G = '&'
H = '*'
I = '('
J = ')'
K = '-'
L = '_'
M = '+'
N = '='
O = '!'
P = '~'
Q = '9'
R = '5'
S = '2'
T = '6'
U = '1'
V = '8'
W = '7'
X = '4'
Y = '?'
Z = '/'

a = '@!'
b = '#$'
c = '%^'
d = '&(d)'
e = '!@'
f = '~~'
g = '*('
h = '+)'
i = '<3'
j = '[]'
k = '{}}'
l = '||'
m = '*£'
n = ';n;'
o = '/['
p = '^('
q = '{£'
r = '>_<'
s = '\_/'
t = '-:-'
u = '^%^'
v = '/\'
w = '\|'
x = '&('
y = ':<'
z = ',.'

def encryption():
    sequence = str(input("Please input the sequence you want encrypted. "))

注:该程序仅用于学习并非正式加密工具,可公开密钥。

实现步骤与优化

1. 用字典统一存储字符映射

原代码用单个变量存储每个字符的密钥,不便于后续查找和维护,建议将所有映射关系存入一个字典,键是原字符,值是对应的加密密钥:

char_map = {
    # 大写字母映射
    'A': '@', 'B': '`', 'C': ':', 'D': '$', 'E': '%', 'F': '^', 'G': '&',
    'H': '*', 'I': '(', 'J': ')', 'K': '-', 'L': '_', 'M': '+', 'N': '=',
    'O': '!', 'P': '~', 'Q': '9', 'R': '5', 'S': '2', 'T': '6', 'U': '1',
    'V': '8', 'W': '7', 'X': '4', 'Y': '?', 'Z': '/',
    # 小写字母映射
    'a': '@!', 'b': '#$', 'c': '%^', 'd': '&(d)', 'e': '!@', 'f': '~~',
    'g': '*(', 'h': '+)', 'i': '<3', 'j': '[]', 'k': '{}}', 'l': '||',
    'm': '*£', 'n': ';n;', 'o': '/[', 'p': '^( ', 'q': '{£', 'r': '>_<',
    's': '\\_/', 't': '-:-', 'u': '^%^', 'v': '/\\', 'w': '\\|', 'x': '&(',
    'y': ':<', 'z': ',.'
}

注意:原代码中v = '/\'和w = '\|'存在转义字符错误,已修正为v = '/\\'和w = '\\|',避免语法报错。

2. 实现字符替换逻辑

在encryption函数中,遍历输入字符串的每个字符,从字典中查找对应的加密值,若字符不在字典中则保留原字符(可根据需求调整处理方式):

def encryption():
    sequence = input("Please input the sequence you want encrypted. ")
    encrypted_result = []
    for char in sequence:
        # 查找映射,不存在则用原字符
        encrypted_char = char_map.get(char, char)
        encrypted_result.append(encrypted_char)
    # 拼接所有加密后的字符得到结果
    encrypted_str = ''.join(encrypted_result)
    print(f"Encrypted sequence: {encrypted_str}")

3. 调用函数执行程序

最后添加函数调用,让程序可以运行:

if __name__ == "__main__":
    encryption()

完整代码

char_map = {
    # 大写字母映射
    'A': '@', 'B': '`', 'C': ':', 'D': '$', 'E': '%', 'F': '^', 'G': '&',
    'H': '*', 'I': '(', 'J': ')', 'K': '-', 'L': '_', 'M': '+', 'N': '=',
    'O': '!', 'P': '~', 'Q': '9', 'R': '5', 'S': '2', 'T': '6', 'U': '1',
    'V': '8', 'W': '7', 'X': '4', 'Y': '?', 'Z': '/',
    # 小写字母映射
    'a': '@!', 'b': '#$', 'c': '%^', 'd': '&(d)', 'e': '!@', 'f': '~~',
    'g': '*(', 'h': '+)', 'i': '<3', 'j': '[]', 'k': '{}}', 'l': '||',
    'm': '*£', 'n': ';n;', 'o': '/[', 'p': '^( ', 'q': '{£', 'r': '>_<',
    's': '\\_/', 't': '-:-', 'u': '^%^', 'v': '/\\', 'w': '\\|', 'x': '&(',
    'y': ':<', 'z': ',.'
}

def encryption():
    sequence = input("Please input the sequence you want encrypted. ")
    encrypted_result = []
    for char in sequence:
        encrypted_char = char_map.get(char, char)
        encrypted_result.append(encrypted_char)
    encrypted_str = ''.join(encrypted_result)
    print(f"Encrypted sequence: {encrypted_str}")

if __name__ == "__main__":
    encryption()

关键说明

  • 使用字典存储映射关系,相比单个变量更易于维护和查找,后续添加数字、符号的映射只需在字典中补充键值对即可。
  • char_map.get(char, char)方法会优先查找字符对应的加密值,若找不到则返回原字符,避免程序报错。
  • 用列表encrypted_result收集加密后的字符,最后用join拼接成字符串,比直接字符串拼接更高效。

内容的提问来源于stack exchange,提问作者Calax

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 12:17:32