[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));
}
}