zoukankan      html  css  js  c++  java
  • 【转】Java生成对应字符串的MD5密码模块

    原文网址:http://www.cnblogs.com/xudong-bupt/archive/2013/05/10/3070899.html

     (1)一般使用的数据库中都会保存用户名和密码,其中密码不使用明码保存。

          有时候用MD5密码,很多语言都提供了将字符串生成为MD5密码的方法或函数。MD5的加密算法是公开的。

          有时候也可以用自己的字符串加密算法,这种加密算法是只有自己知道的。

      (2)破解MD5的过程就是先算好大量或者所有可能的字符串的MD5数值,之后进行查询就可以破解。虽然有些网站规定了密码的位数在6~20位之间,但是要事先计算这么多是字符串并有效的组织存储、查询还是相当麻烦,相当慢的。

        因为MD5的位数是固定的,比如16,32,64,而字符串的组合与长度是无穷尽的,这就有冲突啦。但是如果知道了加密前字符串的长度是有固定范围的,比如6~20,这个还是可以破解的。

       但是,如果不知道加密前字符的长度那么这就是无穷尽啦。貌似现在还没有人能够破解吧。

           MD5密码破解网站 :http://www.cmd5.com/

      (3)下面给出了一个java生成给定字符串的MD5密码的模块程序。

    复制代码
    import java.security.MessageDigest;
    public class Md5Test {
         
         public void toMD5(String plainText) {
              try {
                   //生成实现指定摘要算法的 MessageDigest 对象。
                   MessageDigest md = MessageDigest.getInstance("MD5");    
                   //使用指定的字节数组更新摘要。
                   md.update(plainText.getBytes());
                   //通过执行诸如填充之类的最终操作完成哈希计算。
                   byte b[] = md.digest();
                   //生成具体的md5密码到buf数组
                   int i;
                   StringBuffer buf = new StringBuffer("");
                   for (int offset = 0; offset < b.length; offset++) {
                        i = b[offset];
                        if (i < 0)
                            i += 256;
                        if (i < 16)
                            buf.append("0");
                        buf.append(Integer.toHexString(i));
                   }
                   System.out.println("32位: " + buf.toString());// 32位的加密
                   System.out.println("16位: " + buf.toString().substring(8, 24));// 16位的加密,其实就是32位加密后的截取
              } 
              catch (Exception e) {
                  e.printStackTrace();
              }
         }
        
         public static void main(String agrs[]) {
                 new Md5Test().toMD5("LXD");//加密LXD
         }
    }
    复制代码
  • 相关阅读:
    CopyOnWriteArrayList
    Herriot
    Prefix tree
    hadoop 测试框架
    Hadoop RPC
    OpenCV2马拉松第2圈——读写图片
    LCD深度剖析
    SharePoint 改动passwordWeb Part部署方案
    android小游戏模版—重力感应
    CSS(层叠样式表)基础知识
  • 原文地址:https://www.cnblogs.com/wi100sh/p/5031319.html
Copyright © 2011-2022 走看看