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

Java实现1-10位未知长度ASCII加密密钥暴力破解的方法

实现方案

直接通过「外层遍历密钥长度+数组进位枚举组合」的逻辑实现,不需要新增任何自定义方法,完全符合你的场景要求,代码如下:

// 最外层循环遍历所有可能的密钥长度 1~10
outer: for (int keyLen = 1; keyLen <= 10; keyLen++) {
    // 初始化当前长度的ASCII数组,所有位默认从最小的可打印ASCII 32开始
    int[] keyAscii = new int[keyLen];
    for (int i = 0; i < keyLen; i++) {
        keyAscii[i] = 32;
    }

    while (true) {
        // 转成密钥字符串尝试解密
        String attemptKey = main_engine.ascii_to_string(keyAscii);
        if (main_engine.attempt_to_decrypt_data_with_key(attemptKey)) {
            System.out.println("The encryption key is " + attemptKey);
            break outer;
        }

        // 进位逻辑,类似十进制数字加1,这里每一位的范围是32~127
        int pos = keyLen - 1;
        while (pos >= 0) {
            keyAscii[pos]++;
            if (keyAscii[pos] < 128) {
                // 没有溢出,直接结束进位处理
                break;
            }
            // 当前位溢出,重置为32,前进一位继续加
            keyAscii[pos] = 32;
            pos--;
        }
        // 所有位都溢出了,说明当前长度的所有组合已遍历完,退出循环进入下一个长度
        if (pos < 0) {
            break;
        }
    }
}

逻辑说明

  • 外层循环依次遍历1到10的所有可能密钥长度,优先破解短密钥,符合暴力破解的常规优先级
  • 用数组存储每一位的ASCII值,通过类似数字进位的逻辑生成所有可能的组合,不需要额外写递归或者自定义生成方法
  • 只要attempt_to_decrypt_data_with_key返回true就直接跳出所有循环,输出找到的密钥

本场景无需考虑运行时长的前提下,该逻辑可以无遗漏覆盖所有1~10位的密钥组合。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 07:54:02