md5解密小程序

 md5解密其实有很多的在线网站,这些网站的解密大部分是需要付费的。

 md5其实没有很好的解密方法,最常用的解密方法就是枚举,也叫穷举。

 就是把所有可能的加密的字符串,都经过加密存储起来。形成明文-密文的键值对。

 尽可能多的把所有的字符串都存储起来。所以很多解密网站说是有自己的数据库,需要很多服务器。

下面是我写的一个数字的两次md5加密的一个方法,一般不超过6位的数字,基本20分钟内能穷举完。这样是都可以破解的。

目前md5最好的破解方法就是,列举可能的字符串片段,然后通过排列组合,找出所有的明文密文键值对,然后进行比对。

	public static void main(String[] args) throws Exception { // TODO
	  double vint =0.0001; 
	  String vstr,out="";
	  String enstr = "";
      DecimalFormat df=new DecimalFormat("0000");
	  
	  for(int i=0;i<10000;i++){
	  
	    vstr =""+df.format(i);
	    enstr =encryptPwd(vstr) ;
	  
	    out= out +"明文:"+df.format(i)+",密文:"+enstr+"\n";
	    System.out.println(""+i +" ---  "+enstr);
	    
	  }
	   rwFile(out);
	  
	   System.out.println("---------");
	}
	  
	// 将密码写入文件中
	public static void rwFile(String vstr) {
		FileWriter fw = null;
		try {
			fw = new FileWriter("f:\\password1234.txt", true);
			fw.write(vstr);// 这里向文件中输入结果123
			fw.flush();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			if (fw != null) {
				try {
					fw.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}
	}

下面是通过java实现的md5加密的算法,一般的密码都是两次md5加密。

  //一般的密码都是两次md5加密	
  public static String encryptPwd(String pOriginal) throws Exception {

		String checkcode = stringToMD5(stringToMD5(pOriginal));

		return checkcode;
	}
	
    //string转成md5加密
	public static String stringToMD5(String plainText) {
	        byte[] secretBytes = null;
	        try {
	            secretBytes = MessageDigest.getInstance("md5").digest(
	                    plainText.getBytes());
	        } catch (NoSuchAlgorithmException e) {
	            throw new RuntimeException("没有这个md5算法!");
	        }
	        String md5code = new BigInteger(1, secretBytes).toString(16);
	        for (int i = 0; i < 32 - md5code.length(); i++) {
	            md5code = "0" + md5code;
	        }
	        return md5code;
	}

明文:0000,密文:2c7a5a6bfa4b5baee3b981b7803c3747
明文:0001,密文:75e1b13b5a40b4efb1b4fa8e9191dd0a
明文:0002,密文:58c9054e92e499287547d3d01e27b4ca
明文:0003,密文:cd6ace7e0cccbb4a793a1e0d7c1a3f20
明文:0004,密文:81f1ad310a0f85653984a1a60aa1017b
明文:0005,密文:3b47fc1be62f38bacadf0a00482fb3b1
明文:0006,密文:c469cf6f87f842458c5a81139039dd97
明文:0007,密文:b2a2d08f9cb4b52df1483394c2469c4a
明文:0008,密文:b05426098f838e5344003ff59e023a65
明文:0009,密文:04a52a490ba8f36d74370a22c1e24471
明文:0010,密文:28dd9869166895c7c2748a84494905ce
明文:0011,密文:d47999d68f727d54f26ce9cc10b5a029
明文:0012,密文:98926d890ceeadfbd5a7b1ec0ec03005
明文:0013,密文:7a4ea314af210844906b36fd1eba2348
明文:0014,密文:b6b95dbea63dfb09649e50f9f01c2336
明文:0015,密文:8373f58cf4935018d86f387d8626924f
明文:0016,密文:5e2cdd65543ed0dbda49fea425c6e35a
明文:0017,密文:eb113fa9f73a7ec7a8f374fcd4bd75ce

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值