穷举法破解密码-方法详解

🏰 365bet体育线上投注 📅 2025-07-18 19:49:19 👤 admin 👁️ 8712 👑 365
穷举法破解密码-方法详解

生成一个长度是3的随机字符串,把这个字符串作为当做密码

使用穷举法生成长度是3个字符串,匹配上述生成的密码

要求: 分别使用多层for循环 和 递归解决上述问题

1.穷举法: 穷举算法,依赖计算机强大的计算能力,来穷举每一种可能的情况,以达到解决问题的目的,也叫枚举法、暴力破解法。

基本思想———逐一列举问题所涉及的所有情形,并根据问题提出的条件进行检验从而找到可能的解 。

方法步骤———确定枚举对象、枚举范围、判断条件;循环验证每一个解

2.递归: 递归的思想: 以此类推是递归的基本思想。

具体来讲就是把规模大的问题转化为规模小的相似的子问题来解决。在函数实现时,因为解决大问题的方法和解决小问题的方法往往是同一个方法,所以就产生了函数调用它自身的情况。另外这个解决问题的函数必须有明显的结束条件,这样就不会产生无限递归的情况了。

递归的两个条件: 可以通过递归调用来缩小问题规模,且新问题与原问题有着相同的形式。(自身调用) 存在一种简单情境,可以使递归在简单情境下退出。(递归出口)

递归三要素: 一定有一种可以退出程序的情况; 总是在尝试将一个问题化简到更小的规模 父问题与子问题不能有重叠的部分 递归:自已(方法)调用自已 例子:用递归把目录下所有的目录及文件全部显示出来

方法一:多层循环方式

package day6;

/*

* 练习-穷举法破解密码

* 1. 生成一个长度是3的随机字符串,把这个字符串作为当做密码

2. 使用穷举法生成长度是3个字符串,匹配上述生成的密码

要求: 分别使用多层for循环 和 递归解决上述问题

*/

public class TestNumber10 {

public static void main(String[] args) {

//多层循环方式

String password=randomString(3);//首先通过调用randomString()方法随机生成一个字符串作为密码,并将它赋值给password

System.out.println("密码是:"+password);//输出这个密码

char[]guesspassword=new char[3];//新建一个长度为3的空数组

outloop://设置一个标签,在break的时候使用该标签,即能达到结束多重嵌套循环的效果

//开始多层循环,也就是穷举

for(short i ='0';i<='z';i++){

for(short j ='0';j<='z';j++){

for(short k ='0';k<='z';k++){

if(!isLetterOrDigit(i,j,k)){

//调用isLetterOrDigt()方法,如果i,j,k有一个不符合条件,就跳出当前循环,并开始下一次循环

continue;

}

//如果i,j,k都符合条件,那就分别把i,j,k赋值给guesspassword数组的三个位置

guesspassword[0]=(char)i;

guesspassword[1]=(

皇家推荐

淘友推荐是什么?有哪些特殊规则?
体育365地址

淘友推荐是什么?有哪些特殊规则?

📅 07-17 👁️ 9064
中债隐含评级、YY评级、外部评级的参照系
365bet体育线上投注

中债隐含评级、YY评级、外部评级的参照系

📅 07-01 👁️ 3984
平面模特兒是什麼?深入了解平面模特兒的工作和行業
必定赢365线路检测

平面模特兒是什麼?深入了解平面模特兒的工作和行業

📅 06-30 👁️ 2494
拳皇97训练模式怎么开启 拳皇97训练模式提升自身的游戏技巧攻略
美步家居怎么样?
体育365地址

美步家居怎么样?

📅 06-28 👁️ 2532
excel全屏截图怎么截图
必定赢365线路检测

excel全屏截图怎么截图

📅 07-05 👁️ 277