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

用字母频率解密替换+列置换两步密码时替换环节失效求助

问题背景

需要解密经过「替换加密→列置换加密」两步处理的密文,原定方案为替换环节用密文字母频率与英文标准字母频率匹配解密,置换环节用四元组适配度处理。目前置换部分运行正常,但替换环节代码效果不佳,对应问题代码如下:

def FrequencySubstitution(text):
    # 该函数返回字母表中每个字母的出现频率,取值范围为0-1
    frequencies = LetterFrequencies(text)
    newfrequencies = sorted(frequencies)

    indexes = []

    for i in frequencies:
        count = newfrequencies.count(i)
        if count == 1:
            index = newfrequencies.index(i)
            indexes.append(index)
        else:
            for j in range(count):
                index = newfrequencies.index(i)+j
                if index not in indexes:
                  indexes.append(index)
    indexes.reverse()
    substitutionkey = []
    for i in indexes:
        # mostcommonletters是英文按使用频率从高到低排序的字母列表
        substitutionkey.append(mostcommonletters[I])

    newtext = DecryptSubstitution(text, substitutionkey)

    return (newtext,substitutionkey, indexes)

修复思路与优化方案

1 优先修复代码显性bug

  • 变量名错误:代码中mostcommonletters[I]里的I为大写,和循环变量i不匹配,属于未定义变量,直接运行会报错,修改为小写i即可解决基础运行问题。
  • 索引映射逻辑冗余:原代码处理重复频率时的索引匹配逻辑复杂度高,易出现对应错位,可直接对密文字母按频率降序排序,再和降序排列的标准英文高频字母表一一映射,逻辑更清晰不易出错,优化后的代码示例如下:
def FrequencySubstitution(text):
    # 获得密文字母频率字典,格式为 {字母: 频率值}
    freq_dict = LetterFrequencies(text)
    # 密文字母按频率降序排列
    sorted_cipher_letters = sorted(freq_dict.keys(), key=lambda x: freq_dict[x], reverse=True)
    # 与标准英文频率排序的字母表一一对应生成密钥
    substitutionkey = [mostcommonletters[sorted_cipher_letters.index(c)] for c in 'ABCDEFGHIJKLMNOPQRSTUVWXYZ']
    newtext = DecryptSubstitution(text, substitutionkey)
    return (newtext, substitutionkey)

2 算法层面优化提升准确率

  • 替换硬匹配为爬山算法迭代优化:初始密钥用上述频率匹配的结果,之后每次随机交换密钥中两个字母的映射位置,计算修改后文本的四元组适配度,保留适配度更高的密钥,迭代1000-5000次,基本可以得到接近正确的替换密钥,解决频率接近字母配对错误的问题。
  • 调整解密顺序提升效果:加密顺序是替换→列置换,解密应倒序执行,先解列置换再解替换。列置换密钥长度一般较短,可暴力枚举2-15位的密钥长度,用四元组适配度打分选出最优的列置换结果,再对有序的文本做替换解密,验证和优化的效率都会高很多。
  • 加入基础语言特征修正:可补充规则,比如单个出现的字母优先匹配为a/i,高频出现的双字母组合优先匹配为th/he/er等,进一步修正密钥错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 21:36:03