电影里的密码破译模型设想
电影里的密码破解模型设想
在电影里经常可以看到,要打开一个保险箱的密码(比如密码是123),那么主角会插入一个机器,经过一些等待,会先后显示出3个密码:‘1’、‘2’、‘3’,然后主角输入“123”,密码破解成功,最后芝麻开门~对应的一个简单java程序如下所示:
未实现,也是面临的最重要的2个难点:
1、怎么得到这个密码的字符串
2、就算得到了该密码字符串,通常会对其进行加密之类的保护措施
纯粹无聊随便写写,毫无技术含量,完全新手级别代码,欢迎大家评论~
下期将为大家带来,关于穷举法之类的稍微正常点的密码破解程序~
应该是加break;
还有lz这种密码是不实际的,code你都拿到了,还破解什么?暴力破解是猜密码,而不是拿到密码猜单个字符。
应该是加break;
还有lz这种密码是不实际的,code你都拿到了,还破解什么?暴力破解是猜密码,而不是拿到密码猜单个字符。
break 内层,continue 外层,一个意思~
呵呵,这位朋友不要当真,这种完全是YY出来的,你没看错,我YY出来的这里的确是一位一位破解的,在未来某时我想应该可以的,人类只要有想法,我想这种想法迟早会成真的,呵呵。另外引用一段别人的回答"那是电影啦,跟现实中是不一样的大多数都是穷举法,就是用计算机快速的实验所有可能的密码,最后找出正确的,因为很多密码门都是数字密码,位数又很短,所以破解起来并不困难。现实中穷举法暴力破解密码都需要很长的时间,对于有些加密算法根本就是无从破解,所以电影和现实并不能等同起来,在电影中破解密码当然只需要几秒钟,否则怎么拍呢?"
是的,很快我就会给大家介绍下穷举法之类稍微正常、现实一点的算法
应该是加break;
还有lz这种密码是不实际的,code你都拿到了,还破解什么?暴力破解是猜密码,而不是拿到密码猜单个字符。
恩,呵呵,我都说了,是YY的,不现实的,我在之前就声明了:
未实现,也是面临的最重要的2个难点:
1、怎么得到这个密码的字符串
2、就算得到了该密码字符串,通常会对其进行加密之类的保护措施
还有,拿到code不等于就破解密码了哦~亲。
呵呵,这位朋友不要当真,这种完全是YY出来的,你没看错,我YY出来的这里的确是一位一位破解的,在未来某时我想应该可以的,人类只要有想法,我想这种想法迟早会成真的,呵呵。另外引用一段别人的回答"那是电影啦,跟现实中是不一样的大多数都是穷举法,就是用计算机快速的实验所有可能的密码,最后找出正确的,因为很多密码门都是数字密码,位数又很短,所以破解起来并不困难。现实中穷举法暴力破解密码都需要很长的时间,对于有些加密算法根本就是无从破解,所以电影和现实并不能等同起来,在电影中破解密码当然只需要几秒钟,否则怎么拍呢?"
是的,很快我就会给大家介绍下穷举法之类稍微正常、现实一点的算法
现实中穷举法暴力破解密码都需要很长的时间,对于有些加密算法根本就是无从破解。
这句话表示不赞同,暴力破解的切入点是在按键处,也就是用密码明文进行暴力破解,这种穷举法就是10的几次方, 你说的加密算法是在按键后又做了一次加密运算,用密文去解密,暴力破解很难搞定。
在电影里经常可以看到,要打开一个保险箱的密码(比如密码是123),那么主角会插入一个机器,经过一些等待,会先后显示出3个密码:‘1’、‘2’、‘3’,然后主角输入“123”,密码破解成功,最后芝麻开门~对应的一个简单java程序如下所示:
未实现,也是面临的最重要的2个难点:
1、怎么得到这个密码的字符串
2、就算得到了该密码字符串,通常会对其进行加密之类的保护措施
package test; import java.util.Scanner; public class Test { private static final String code = "~a1~b2c3a#sd!3"; public static void main(String[] args) { Scanner s = new Scanner(System.in); crackThePassword(code); boolean flag = true; do{ System.out.println("请输入密码:"); String input = s.nextLine(); if(input.equals(code)){ System.out.println("密码正确,芝麻开门~"); flag = false; } }while(flag); } public static void crackThePassword(String code){ System.out.println("破译开始"); long start = System.currentTimeMillis(); char[] array = {'a','b','c','d','e','f','g', 'h','i','j','k','l','m','n', 'o','p','q','r','s','t','u', 'v','w','x','y','z','0','1', '2','3','4','5','6','7','8', '9','~','!','@','#','$','%'}; char[] c = code.toCharArray(); char[] result = new char[c.length]; int k = 0; for (int i = 0; i < c.length; i++) { for (int j = 0; j < array.length; j++) { if(c[i]==array[j]){ result[k]=array[j]; k++; } } } String s = ""; for (int i = 0; i < result.length; i++) { s = s+result[i]; } System.out.println("破译结束"); System.out.println("密码为:"+s); long end = System.currentTimeMillis(); long time = end-start; System.out.println("用时:"+time+"秒"); } }
纯粹无聊随便写写,毫无技术含量,完全新手级别代码,欢迎大家评论~
下期将为大家带来,关于穷举法之类的稍微正常点的密码破解程序~
1 楼
kidding87
2013-03-08
if(c[i]==array[j]){
result[k]=array[j];
k++;
//这里咋说也需要个continue吧
}
还有密码有一位一位数破解的?
result[k]=array[j];
k++;
//这里咋说也需要个continue吧
}
还有密码有一位一位数破解的?
2 楼
享受生活
2013-03-08
kidding87 写道
if(c[i]==array[j]){
result[k]=array[j];
k++;
//这里咋说也需要个continue吧
}
还有密码有一位一位数破解的?
result[k]=array[j];
k++;
//这里咋说也需要个continue吧
}
还有密码有一位一位数破解的?
应该是加break;
还有lz这种密码是不实际的,code你都拿到了,还破解什么?暴力破解是猜密码,而不是拿到密码猜单个字符。
3 楼
kidding87
2013-03-08
享受生活 写道
kidding87 写道
if(c[i]==array[j]){
result[k]=array[j];
k++;
//这里咋说也需要个continue吧
}
还有密码有一位一位数破解的?
result[k]=array[j];
k++;
//这里咋说也需要个continue吧
}
还有密码有一位一位数破解的?
应该是加break;
还有lz这种密码是不实际的,code你都拿到了,还破解什么?暴力破解是猜密码,而不是拿到密码猜单个字符。
break 内层,continue 外层,一个意思~
4 楼
QuarterLifeForJava
2013-03-08
kidding87 写道
if(c[i]==array[j]){
result[k]=array[j];
k++;
//这里咋说也需要个continue吧
}
还有密码有一位一位数破解的?
result[k]=array[j];
k++;
//这里咋说也需要个continue吧
}
还有密码有一位一位数破解的?
呵呵,这位朋友不要当真,这种完全是YY出来的,你没看错,我YY出来的这里的确是一位一位破解的,在未来某时我想应该可以的,人类只要有想法,我想这种想法迟早会成真的,呵呵。另外引用一段别人的回答"那是电影啦,跟现实中是不一样的大多数都是穷举法,就是用计算机快速的实验所有可能的密码,最后找出正确的,因为很多密码门都是数字密码,位数又很短,所以破解起来并不困难。现实中穷举法暴力破解密码都需要很长的时间,对于有些加密算法根本就是无从破解,所以电影和现实并不能等同起来,在电影中破解密码当然只需要几秒钟,否则怎么拍呢?"
是的,很快我就会给大家介绍下穷举法之类稍微正常、现实一点的算法
5 楼
QuarterLifeForJava
2013-03-08
享受生活 写道
kidding87 写道
if(c[i]==array[j]){
result[k]=array[j];
k++;
//这里咋说也需要个continue吧
}
还有密码有一位一位数破解的?
result[k]=array[j];
k++;
//这里咋说也需要个continue吧
}
还有密码有一位一位数破解的?
应该是加break;
还有lz这种密码是不实际的,code你都拿到了,还破解什么?暴力破解是猜密码,而不是拿到密码猜单个字符。
恩,呵呵,我都说了,是YY的,不现实的,我在之前就声明了:
未实现,也是面临的最重要的2个难点:
1、怎么得到这个密码的字符串
2、就算得到了该密码字符串,通常会对其进行加密之类的保护措施
还有,拿到code不等于就破解密码了哦~亲。
6 楼
仗剑执法1
2013-03-08
目前只能想到暴力破解,没有想到第二种方法。暴力破解的前提是对方没有设置尝试次数限制,暴力破解的速度取决于密码长度,通常的密码长度不会超过6位,尝试次数一百万足够了,速度很快。
7 楼
仗剑执法1
2013-03-08
QuarterLifeForJava 写道
kidding87 写道
if(c[i]==array[j]){
result[k]=array[j];
k++;
//这里咋说也需要个continue吧
}
还有密码有一位一位数破解的?
result[k]=array[j];
k++;
//这里咋说也需要个continue吧
}
还有密码有一位一位数破解的?
呵呵,这位朋友不要当真,这种完全是YY出来的,你没看错,我YY出来的这里的确是一位一位破解的,在未来某时我想应该可以的,人类只要有想法,我想这种想法迟早会成真的,呵呵。另外引用一段别人的回答"那是电影啦,跟现实中是不一样的大多数都是穷举法,就是用计算机快速的实验所有可能的密码,最后找出正确的,因为很多密码门都是数字密码,位数又很短,所以破解起来并不困难。现实中穷举法暴力破解密码都需要很长的时间,对于有些加密算法根本就是无从破解,所以电影和现实并不能等同起来,在电影中破解密码当然只需要几秒钟,否则怎么拍呢?"
是的,很快我就会给大家介绍下穷举法之类稍微正常、现实一点的算法
现实中穷举法暴力破解密码都需要很长的时间,对于有些加密算法根本就是无从破解。
这句话表示不赞同,暴力破解的切入点是在按键处,也就是用密码明文进行暴力破解,这种穷举法就是10的几次方, 你说的加密算法是在按键后又做了一次加密运算,用密文去解密,暴力破解很难搞定。