package util;; _: X# M* T) [+ G5 R, J+ I* Q3 q
import java.security.MessageDigest;
- f- I' b* ?* s import java.security.NoSuchAlgorithmException;
& P. ^ S+ R+ d6 B3 ~" I public class MD5Tool {
7 E: O# Y' d! G9 m) c /**" Q8 q1 v3 V9 Y. W; @+ w
* 该方法将指定的字符串用MD5算法加密后返回。
, v- y7 N' V$ {: \, _ * @param s6 Y( {* X" W6 z+ d' E% q9 R
* @return$ w9 P! ~0 j& J- n
*/
7 d# }% g& R1 ?. p' A2 ` public static String getMD5Encoding(String s) {- z% w! O4 l+ w) P
byte[] input=s.getBytes();
: e$ @ r& q! t String output = null;
9 ~; b, k, D# m6 B2 W( D // 声明16进制字母
8 S! P# C' B) ]; @; z# j char[] hexChar={'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};
( j/ R+ Z! P; U, ^( E% n try{
- G, @8 m/ J& U! r) Q8 U, |. W- N // 获得一个MD5摘要算法的对象
. b9 u# g! i3 R' Q9 r! L1 x MessageDigest md=MessageDigest.getInstance("MD5");
2 m3 R9 d4 k2 e md.update(input);' w9 p' X( R* ^& |! U! ?4 S
/*
. q6 O) r9 j; H. H. } MD5算法的结果是128位一个整数,在这里javaAPI已经把结果转换成字节数组了
, P, u- S0 M6 n+ W+ \ */
0 j0 [+ a4 s' b$ z byte[] tmp = md.digest();//获得MD5的摘要结果
2 a, e; x5 O5 {; v char[] str = new char[32];7 X& C5 s8 `9 h8 T7 O* z
byte b=0;: E6 e3 r. \# ~1 j: E! U
for(int i=0;i>>4 & 0xf];//取每一个字节的低四位换成16进制字母$ o& E8 a. N* g' w5 R
str[2*i+1] = hexChar[b & 0xf];//取每一个字节的高四位换成16进制字母
% ~$ L% {2 Y& C; h8 d9 ?0 |* x2 R& r }' ^; B" F% P; Y0 I# _7 ~& G
output = new String(str);
8 V& P5 v2 {7 i5 ` }catch(NoSuchAlgorithmException e){
' L* Z) V' l* F e.printStackTrace();- w0 r4 i) o6 P) s6 Z" C2 ]1 i2 Z' F, s
}
2 n+ P2 Q7 f! f: N0 m0 o9 Q7 G4 o+ Z return output;' N$ l9 i9 D/ c" a8 v# v' e
}: ^, [4 t7 S3 {1 M9 ~ @2 M
} |