黑马程序员技术交流社区

标题: 一个用MD5加密的小demo [打印本页]

作者: 刘郑瑞    时间: 2013-1-23 13:12
标题: 一个用MD5加密的小demo
MD5加密当今是非常流行的,银行,企业账号采用的都是20次以上的MD5加密。这里,必须简单的学习一下。
import  java.security.*;   
import  java.security.spec.*;   
   
class  MD5_test {   
public   final   static  String MD5(String s) {   
  char  hexDigits[] = {  '0' ,  '1' ,  '2' ,  '3' ,  '4' ,  '5' ,  '6' ,  '7' ,  '8'

,  '9' ,   
    'a' ,  'b' ,  'c' ,  'd' ,  'e' ,  'f'  };   
  try  {   
   byte [] strTemp = s.getBytes();   
   MessageDigest mdTemp = MessageDigest.getInstance("MD5" );   
   mdTemp.update(strTemp);   
   byte [] md = mdTemp.digest();   
   int  j = md.length;   
   char  str[] =  new   char [j *  2 ];   
   int  k =  0 ;   
   for  ( int  i =  0 ; i < j; i++) {   
    byte  byte0 = md[i];   
    str[k++] = hexDigits[byte0 >>> 4  &  0xf ];   
    str[k++] = hexDigits[byte0 & 0xf ];   
   }   
   return   new  String(str);   
  } catch  (Exception e) {   
   return   null ;   
  }   
 }   
   
 public   static   void  main(String[] args) {   
  // MD5_Test aa = new MD5_Test();   
  System.out.print(MD5_test.MD5("b" ));   
 }   
}
作者: 低调的奢华    时间: 2013-1-23 13:28
由于MD5的弱点被不断发现以及计算机能力不断的提升,通过碰撞的方法有可能构造两个具有相同MD5的信息,使MD5算法在目前的安全环境下有一点落伍。
做加密其实MD5与DES相结合的方式是不错的选择。因为DES加密可逆,较之MD5难破解些,一般银行卡账户使用的就是这种算法;另外MD5生成固定的32位密钥,便于在数据库中存储,字段长度不变,不会浪费空间。
作者: 马金池    时间: 2013-1-23 16:00
学校里好像讲过是对称还是不对称的来的?
ps:又是我家林峰~~
作者: 可见    时间: 2013-1-23 16:36
马金池 发表于 2013-1-23 16:00
学校里好像讲过是对称还是不对称的来的?
ps:又是我家林峰~~

既非对称也非不对称。 严格意义上讲MD5不能叫做一种加密算法




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2