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

基于指定字符串的随机4位密码生成与暴力破解计数开发求助

随机密码生成与暴力破解次数统计实现

这里给你完整的可运行代码,直接解决需求:

import java.util.Random;

public class PasswordCracker {
    public static void main(String[] args) {
        String alphabet = "ABCabc012!";
        char[] charSet = alphabet.toCharArray();
        int comboLength = 4;
        
        // 随机生成目标密码
        Random random = new Random();
        StringBuilder targetPwd = new StringBuilder();
        for (int i = 0; i < comboLength; i++) {
            int randIdx = random.nextInt(charSet.length);
            targetPwd.append(charSet[randIdx]);
        }
        String target = targetPwd.toString();
        System.out.println("目标密码(演示用):" + target);
        
        // 遍历所有组合找密码,统计次数
        long guessTimes = 0;
        boolean isFound = false;
        
        // 四层循环遍历所有4位组合,找到就停
        for (int i = 0; i < charSet.length && !isFound; i++) {
            for (int j = 0; j < charSet.length && !isFound; j++) {
                for (int k = 0; k < charSet.length && !isFound; k++) {
                    for (int l = 0; l < charSet.length && !isFound; l++) {
                        guessTimes++;
                        // 拼出当前猜测的密码
                        String currentGuess = "" + charSet[i] + charSet[j] + charSet[k] + charSet[l];
                        
                        if (currentGuess.equals(target)) {
                            System.out.println("找到密码:" + currentGuess);
                            System.out.println("总共猜了:" + guessTimes + "次");
                            isFound = true;
                        }
                    }
                }
            }
        }
    }
}

关键点说明

  1. 随机生成密码:用Random类从你的字符集里随机挑4个字符,拼出目标密码,打印出来是为了验证,实际用可以删掉这个打印。
  2. 遍历匹配逻辑:
    • 在你原来的四层循环基础上,每次生成一个4位组合就把计数+1。
    • 每次生成的组合直接和目标密码对比,匹配上就标记isFound为true,所有循环都会因为&& !isFound的条件提前终止,不用白跑剩下的循环。
    • 完全不需要额外存储所有组合,边生成边匹配就行,省内存还高效。
  3. 计数统计:用long类型存次数,避免字符集大的时候int不够用(比如你这个字符集有11个字符,总组合数是11^4=14641,用int也够,但养成好习惯用long更稳妥)。

小优化建议

如果以后要生成更长的密码,四层循环太麻烦,可以改成递归生成组合,这样不管是4位还是N位都能复用代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 19:50:13