a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 126|回复: 0

[专业语言] JAVA认证:javaMD5加密源码分析

[复制链接]
发表于 2012-8-4 12:44:44 | 显示全部楼层 |阅读模式
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
    }
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-6 23:00 , Processed in 0.250715 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表