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

如何基于自定义criptgraphy开发Python加解密程序?

自定义Python加解密程序实现方案

嘿,我来帮你搞定这个自定义加解密程序!首先得明确你的规则本质是单字母替换加密——每个小写字母对应一个固定的长字符串,加密就是把明文里的小写字母替换成对应字符串,解密则是反向操作。下面是具体实现步骤和代码:

1. 整理映射字典

首先把你给出的字母-字符串对应关系整理成Python字典,这是整个加解密逻辑的核心。注意你提供的y对应的字符串不完整,记得补充完整后替换到字典里:

# 加密字典:小写字母 → 对应的密文字符串
encrypt_map = {
    'a': "v07u4tLKinfa",
    'b': "zz45tTn8u4o0",
    'c': "W46tEr10d01z",
    'd': "5aPSCr36quA7",
    'e': "Zg6pPrg17t15",
    'f': "Po84cr3Ud25M",
    'g': "L0l1crXtOO11",
    'h': "7G1CaZ2wBg9f",
    'i': "Z1Yd84we71y3",
    'j': "LL6TRe0yR4tj",
    'k': "kt426ug76Vz3",
    'l': "26IzOZyrXCt4",
    'm': "Z3uj09HJ6Iou",
    'n': "0d2Wna13lERT",
    'o': "N935efQef3JH",
    'p': "7j43Ghnf6R4o",
    'q': "dF13Rw9nX6i8",
    'r': "DOu3fw073r81",
    's': "3C0w23rTg5Ij",
    't': "TE436nyWi5ee",
    'u': "58Ybt78n3e06",
    'v': "39j8rH9TYrcO",
    'w': "0NAtO48veQM7",
    'x': "K2uC2tgEVBn4",
    'y': "9nRm03xxxxxx"  # 替换成你完整的y对应字符串
}

# 解密字典:密文字符串 → 小写字母,直接反转加密字典即可
decrypt_map = {v: k for k, v in encrypt_map.items()}

2. 实现加密函数

加密逻辑很简单:遍历明文的每个字符,小写字母用映射替换,其他字符(比如大写、数字、空格、符号)直接保留:

def custom_encrypt(plaintext):
    ciphertext = []
    for char in plaintext:
        # 小写字母替换成对应密文,非小写字母原样保留
        if char.islower():
            ciphertext.append(encrypt_map.get(char, char))
        else:
            ciphertext.append(char)
    return ''.join(ciphertext)

3. 实现解密函数

观察你给出的密文字符串,发现它们都是12位长度,所以我们可以按固定12位分割密文块,再反向映射回字母。如果有长度不统一的密文字符串,可以用后面的可变长度版本:

固定长度版本(推荐,效率更高)

def custom_decrypt(ciphertext):
    plaintext = []
    block_size = 12  # 所有密文字符串的长度
    # 按12位分割密文,逐个块解密
    for i in range(0, len(ciphertext), block_size):
        block = ciphertext[i:i+block_size]
        # 完整块查解密字典,不足12位的部分直接保留
        if len(block) == block_size:
            plaintext.append(decrypt_map.get(block, block))
        else:
            plaintext.append(block)
    return ''.join(plaintext)

可变长度版本(适配不同长度的密文字符串)

如果你的密文字符串长度不统一,用这个版本会更稳妥(按最长优先匹配,避免短字符串先匹配导致错误):

def custom_decrypt_variable_length(ciphertext):
    plaintext = []
    i = 0
    while i < len(ciphertext):
        matched = False
        # 按密文字符串长度从长到短匹配,避免匹配错误
        for key in sorted(decrypt_map.keys(), key=len, reverse=True):
            if ciphertext.startswith(key, i):
                plaintext.append(decrypt_map[key])
                i += len(key)
                matched = True
                break
        # 没找到匹配的密文块,直接保留当前字符
        if not matched:
            plaintext.append(ciphertext[i])
            i += 1
    return ''.join(plaintext)

4. 测试代码

你可以用下面的代码测试加解密功能是否正常:

# 测试加密
test_plain = "hello world!"
cipher = custom_encrypt(test_plain)
print(f"加密后的密文: {cipher}")

# 测试解密(用固定长度版本)
decrypted_plain = custom_decrypt(cipher)
print(f"解密后的明文: {decrypted_plain}")

注意事项

  • 确保所有字母对应的密文字符串是唯一的,否则解密时会出现歧义(比如两个字母对应同一个字符串,无法确定还原哪个)。
  • 如果需要支持大写字母或其他字符的加密,只需在encrypt_map里补充对应的键值对即可。
  • 如果密文可能被截断,解密时最后一段不足12位的内容会被原样保留,你可以根据需求调整这部分逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:42:52