用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - java代码库

MD5加密工具类

2015-06-03 作者: 小韦举报

[java]代码库

package utils;

import  java.io.UnsupportedEncodingException;
import  java.security.MessageDigest;
import  java.security.NoSuchAlgorithmException;
import  java.util.Arrays;

/*
 * MD5 加密工具类
 * 
 */
public   class  DigestUtil {

     private   static  String encodingCharset  =   " UTF-8 " ;
    
     /** 
     *  @param  aValue
     *  @param  aKey
     *  @return 
      */ 
     public   static  String hmacSign(String aValue, String aKey) {
         byte  k_ipad[]  =   new   byte [ 64 ];
         byte  k_opad[]  =   new   byte [ 64 ];
         byte  keyb[];
         byte  value[];
         try  {
            keyb  =  aKey.getBytes(encodingCharset);
            value  =  aValue.getBytes(encodingCharset);
        }  catch  (UnsupportedEncodingException e) {
            keyb  =  aKey.getBytes();
            value  =  aValue.getBytes();
        }

        Arrays.fill(k_ipad, keyb.length,  64 , ( byte )  54 );
        Arrays.fill(k_opad, keyb.length,  64 , ( byte )  92 );
         for  ( int  i  =   0 ; i  <  keyb.length; i ++ ) {
            k_ipad[i]  =  ( byte ) (keyb[i]  ^   0x36 );
            k_opad[i]  =  ( byte ) (keyb[i]  ^   0x5c );
        }

        MessageDigest md  =   null ;
         try  {
            md  =  MessageDigest.getInstance( " MD5 " );
        }  catch  (NoSuchAlgorithmException e) {

             return   null ;
        }
        md.update(k_ipad);
        md.update(value);
         byte  dg[]  =  md.digest();
        md.reset();
        md.update(k_opad);
        md.update(dg,  0 ,  16 );
        dg  =  md.digest();
         return  toHex(dg);
    }

     public   static  String toHex( byte  input[]) {
         if  (input  ==   null )
             return   null ;
        StringBuffer output  =   new  StringBuffer(input.length  *   2 );
         for  ( int  i  =   0 ; i  <  input.length; i ++ ) {
             int  current  =  input[i]  &   0xff ;
             if  (current  <   16 )
                output.append( " 0 " );
            output.append(Integer.toString(current,  16 ));
        }

         return  output.toString();
    }

     /** 
     * 
     *  @param  args
     *  @param  key
     *  @return 
      */ 
     public   static  String getHmac(String[] args, String key) {
         if  (args  ==   null   ||  args.length  ==   0 ) {
             return  ( null );
        }
        StringBuffer str  =   new  StringBuffer();
         for  ( int  i  =   0 ; i  <  args.length; i ++ ) {
            str.append(args[i]);
        }
         return  (hmacSign(str.toString(), key));
    }

     /** 
     *  @param  aValue
     *  @return 
      */ 
     public   static  String digest(String aValue) {
        aValue  =  aValue.trim();
         byte  value[];
         try  {
            value  =  aValue.getBytes(encodingCharset);
        }  catch  (UnsupportedEncodingException e) {
            value  =  aValue.getBytes();
        }
        MessageDigest md  =   null ;
         try  {
            md  =  MessageDigest.getInstance( " SHA " );
        }  catch  (NoSuchAlgorithmException e) {
            e.printStackTrace();
             return   null ;
        }
         return  toHex(md.digest(value));

    }
}


网友评论    (发表评论)


发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...