package util;
3 @$ j$ l- x" {6 g+ r, Q. f. V import java.security.MessageDigest;
$ G8 z1 ~9 m; q; N8 ?- Q import java.security.NoSuchAlgorithmException;- F& w3 f5 Y* ~. Y7 o! _/ D
public class MD5Tool {
, F" S$ ^5 Y6 }0 v /**; d! c- Q$ ^2 m1 F; Y7 G* M& _5 Q1 q
* 该方法将指定的字符串用MD5算法加密后返回。
' n# F" }1 q+ ]2 B' o" g * @param s
" A( `. W8 @& z8 f * @return
. f5 s8 h4 k. Q9 ]& Q */8 J' Q' f5 E# o) |
public static String getMD5Encoding(String s) {3 e- \ F& H. d
byte[] input=s.getBytes();5 ~. O9 L6 Z* N6 |" B6 ~
String output = null;$ t" n5 i8 J9 Z n! U! {+ O
// 声明16进制字母
3 A7 b( h( i/ n char[] hexChar={'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};! C$ r+ f) K$ `2 L
try{
# u4 D8 }8 r2 R1 q& y8 G // 获得一个MD5摘要算法的对象
7 {* x7 m) U( f' F MessageDigest md=MessageDigest.getInstance("MD5");7 v; G7 n- Z# \% Y e7 o3 l
md.update(input);
) Y/ h9 X1 y& f' } /*% |* t% u( J6 `# q: |
MD5算法的结果是128位一个整数,在这里javaAPI已经把结果转换成字节数组了
0 B$ d( W; V+ j */( \1 t2 }- F$ u* w" G& H3 M& K
byte[] tmp = md.digest();//获得MD5的摘要结果5 h L! x3 t% t/ |! O; k+ [
char[] str = new char[32];
! W! r2 u; _ N: `/ ?" G2 k byte b=0;6 Q/ q8 `5 B' I% w7 P
for(int i=0;i>>4 & 0xf];//取每一个字节的低四位换成16进制字母
9 b e- p z1 x2 H3 F str[2*i+1] = hexChar[b & 0xf];//取每一个字节的高四位换成16进制字母8 {2 {7 A, [/ [4 R _" @
}
o8 a U8 I h5 o8 P/ [ output = new String(str);
/ Z7 g& K; z4 g# t3 ` }catch(NoSuchAlgorithmException e){
; S6 a" i" R# h! H e.printStackTrace();
, g, f1 @! P# ~6 L2 I }
( I" }+ z9 `& c4 _ return output;* z0 x S6 T3 X' Y
}& C6 l. B+ H5 B
} |