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

Java Cipher Columnar Transposition列置换密码解密异常排查

列置换密码解密代码修复方案

你的解密方法存在两处核心逻辑错误,修复方案如下:

错误说明

  • 填充逻辑错误:加密逻辑为「明文按行填数组→按列读得到密文」,解密作为逆过程,需要「密文按列填数组→按行读得到明文」,原解密方法仍按行填充密文,逻辑完全反向。
  • 拼接逻辑错误:原代码拼接解密结果时错误写入了入参txt对象,最终返回的output始终为空字符串。

修复后代码

private static String decipherTrans(String txt, int num) {
    String output = "";
    int num2 = (int) Math.ceil(txt.length() * 1.0 / num);
    char[][] buffer = new char[num2][num];
    int k = 0;
    // 改为按列填充密文到二维数组
    for (int j = 0; j < num; j++) {
        for (int i = 0; i < num2; i++, k++) {
            if (txt.length() > k) {
                buffer[i][j] = txt.charAt(k);
            }
        }
    }
    // 按行读取得到明文,同时过滤数组默认的空字符
    for (int i = 0; i < num2; i++) {
        for (int j = 0; j < num; j++) {
            if (buffer[i][j] != '\u0000') {
                output += buffer[i][j];
            }
        }
    }
    return output;
}

验证结果

使用你给出的测试用例验证:输入明文my name is dani、列数为5,加密输出mm yed aninasi,解密后可正确还原原明文。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 09:45:02