import java.security.*; import java.io.*; import java.util.*;
class A1 { public static void main(String[] args) { if(args == null || args.length < 2) { usage(); return; } FS fs; List<String> list; MessageDigest md; try { InputStream fis = new FileInputStream(args[0]); fs = FS.get(fis); fis.close(); BufferedReader br = new BufferedReader(new InputStreamReader( new FileInputStream(args[1]))); String pw; list = new ArrayList<String>(); while((pw=br.readLine()) != null) { list.add(pw); } br.close(); md = MessageDigest.getInstance("MD5"); } catch(IOException e) { System.out.println("err: " + e.getMessage()); return; } catch(NoSuchAlgorithmException ne) { System.out.println("err: " + ne.getMessage()); return; }
int num = btoi(fs.block[0].data); System.out.printf("加密轮次: %d\n", num); byte[] pwd = fs.block[1].data; for(int i = 0,len=list.size(); i < len;i++) { byte[] src = list.get(i).getBytes(); long start = System.currentTimeMillis(); byte[] dst = digestN(md, src, num); System.out.println("cost time: " + (System.currentTimeMillis() - start)); if(be(pwd, dst)) { System.out.println("hi, baby, you've got it pw: " + list.get(i)); return; } else { System.out.println(list.get(i) + " isn't match pw, try next"); } } }
private static boolean be(byte[] src, byte[] dst) { for(int i = 0; i < src.length; i++) { if(src[i] != dst[i]) { return false; } } return true; } private static byte[] digestN(MessageDigest md, byte[] src, int n) { int i; for(i = 0; i < n/3; i+=3) { src = md.digest(src); src = md.digest(src); src = md.digest(src); } while(i++ < n) { src = md.digest(src); } for(i = 0; i < src.length; i++) { src[i] = (byte)(~src[i]^0x10); } return src; }
private static class FS { static final int fl = 4; byte[] fh; short bn; Block[] block; static FS get(InputStream in)throws IOException { FS fs = new FS(); fs.fh = new byte[4]; in.read(fs.fh); fs.bn = (short)( (in.read() & 0xff) | (in.read() & 0xff)<<8); fs.block = new Block[fs.bn]; for(int i = 0; i < fs.bn; i++) { fs.block[i] = Block.get(in); } return fs; }
void print(PrintStream out)throws IOException { out.printf("%2x %2x %2x %2x %2x %2x ",fh[0],fh[1],fh[2],fh[3],(byte)bn,(byte)(bn>>8)); for(int i = 0; i < block.length; i++) { block[i].print(out); } } }; private static class Block { byte type; short nl; byte[] name; int dl; byte[] data; static Block get(InputStream in)throws IOException { Block block = new Block(); block.type = (byte)in.read(); block.nl = (short)( (in.read() & 0xff) | (in.read() & 0xff)<<8); block.name = new byte[block.nl]; in.read(block.name); block.dl = ( (in.read() & 0xff) << 0 | (in.read() & 0xff) << 8 | (in.read() & 0xff) <<16 | (in.read() & 0xff) <<24 ); block.data = new byte[block.dl]; in.read(block.data); return block; }
void print(PrintStream out)throws IOException { out.printf("%2x %2x %2x ",type, (byte)nl, (byte)(nl>>8)); for(int i = 0; i < nl; i++) { out.printf("%2x ", name[i]); } out.printf("%2x %2x %2x %2x ",(byte)dl,(byte)(dl>>8),(byte)(dl>>16),(byte)(dl>>24)); for(int i = 0; i < dl; i++) { out.printf("%2x ",data[i]); } } };
private static int btoi(byte[] src) { return (int)(( src[0] & 0xff) << 0 | (src[1] & 0xff) <<8 | (src[2] & 0xff) <<16 | (src[3] & 0xff) <<24); }
private static void usage() { System.out.println("usage: java A1 密码文件 字典文件\n"); } }
说实话,这是别人的程序,不过我觉的15行和25行有问题,有时间改一下,我现在还没有找到错误的原因!!! 
From The Blogs
|
02-19
|
近日陈冠希艳照门热度不减虽然有关部门放话说查阅和存贮相关的艺人不雅照片是违法的,但是由于窥探隐私的心理作用下,艳照门相关的艳照的人物越来越多昨天还出现了杨永晴的裸照,杨永晴的全裸淋浴照激情照,无码,原...
查看全文
|
|
2007
|
现在在香港可以使用破解版的iPhone。破解的iPhone可以使用香港运营商的SIM卡,并可以打电话发短信。你从图片可以看出,iPhone屏幕上显示的是HK CSL(一个香港的手机运营商),而不是AT...
查看全文
|
2007
|
资料图片:美国已故著名演员玛丽莲·梦露在电影《七年之痒》中“风拂裙摆”一幕,让无数电影迷倾心。 夫妻间的“七年之痒”和婚姻危机是如何得到预测与量化的?科研人员拿出不少公式 近日,针对德国的...
查看全文
|
|
06-12
|
大家对下海经商的故事并不陌生。主人公有一份收入不错的工作,过着舒适规律的生活。出于某种原因,需要更高的收入来改变这种生活。这时,自己做老板的欲望开始蠢蠢欲动,他们想辞去现在工作开创自己的事业。他们可能...
查看全文
|
|
02-23
|
有的Q友在Q-ZONE设了密码,你想看他的QQ空间的话要输入密码才行。 现在,我教大家利用Q-ZONE中的一个BUG,绕过密码访问他的QQ空间……
查看全文
|
2007
|
莫莫斯科“类人学家”声称157年前捕获的神秘动物可能是尼安德特人的后代—— 蒙古西部和俄罗斯的高加索山,有可能存在一支独特的生物。高加索当地人管它叫阿玛斯提,蒙古人称它为阿玛斯。 其他的外号包括,森林...
查看全文
|
|
2007
|
引言“在所有报告中,大约有20%是来自那些值得信任的观测者发现的不可思议的事情。。。” ...
查看全文
|
|
06-05
|
长期持有的“达·芬奇密码” 先讲一段禅一样的文字。在网上看了这么一段大概是80后的短信往来作品: A:左眼也可以看到右眼,右眼也可以看见世界。 B:友...
查看全文
|
|
05-20
|
我父亲曾经给我作过一个带QR密码的私人密码图章.QR密码是一种基质密码(或者说是二维条码),它是日本DENSO波公司在1994年发明的."QR"是词条"快速响应"的缩写,它的发明者希望这种密码允许其中...
查看全文
|
|
04-24
|
马里兰当局正在逐步增加力度解决欺凌弱小这一问题,这不仅仅是发生在学校,还发生在很多其它地方。你有没有注意到恃强凌弱现象也发生在工作场所?据华盛顿邮报发表的文章报道: 有展开的研究显示欺凌弱...
查看全文
|
More Articles
|
赞助商提供
Elanso is a professional online platform which provides translation service for corporate or individule clients, opportunities for translation practice and translation jobs, and translation tool/software-download. Our online translators provide about 186 languages' translation service, including Japanese,Korean, French, German, Spanish, etc, among which, 20,000 are English translators. And some big translation service companies in Shanghai, Beijing, Nanjing also registered here.
|