首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 其他相关 >

电影里的密码破译模型设想

2013-03-16 
电影里的密码破解模型设想在电影里经常可以看到,要打开一个保险箱的密码(比如密码是123),那么主角会插入一

电影里的密码破解模型设想
在电影里经常可以看到,要打开一个保险箱的密码(比如密码是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吧
                }

还有密码有一位一位数破解的? 2 楼 享受生活 2013-03-08   kidding87 写道   if(c[i]==array[j]){ 
                    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吧
                }

还有密码有一位一位数破解的?


应该是加break;
还有lz这种密码是不实际的,code你都拿到了,还破解什么?暴力破解是猜密码,而不是拿到密码猜单个字符。

break 内层,continue 外层,一个意思~ 4 楼 QuarterLifeForJava 2013-03-08   kidding87 写道   if(c[i]==array[j]){ 
                    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吧
                }

还有密码有一位一位数破解的?


应该是加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吧
                }

还有密码有一位一位数破解的?
呵呵,这位朋友不要当真,这种完全是YY出来的,你没看错,我YY出来的这里的确是一位一位破解的,在未来某时我想应该可以的,人类只要有想法,我想这种想法迟早会成真的,呵呵。另外引用一段别人的回答"那是电影啦,跟现实中是不一样的大多数都是穷举法,就是用计算机快速的实验所有可能的密码,最后找出正确的,因为很多密码门都是数字密码,位数又很短,所以破解起来并不困难。现实中穷举法暴力破解密码都需要很长的时间,对于有些加密算法根本就是无从破解,所以电影和现实并不能等同起来,在电影中破解密码当然只需要几秒钟,否则怎么拍呢?"
是的,很快我就会给大家介绍下穷举法之类稍微正常、现实一点的算法


现实中穷举法暴力破解密码都需要很长的时间,对于有些加密算法根本就是无从破解。
这句话表示不赞同,暴力破解的切入点是在按键处,也就是用密码明文进行暴力破解,这种穷举法就是10的几次方, 你说的加密算法是在按键后又做了一次加密运算,用密文去解密,暴力破解很难搞定。

热点排行