码迷,mamicode.com
首页 > 编程语言 > 详细

MD5加密算法(实际应用)

时间:2016-11-06 14:07:30      阅读:228      评论:0      收藏:0      [点我收藏+]

标签:工具   span   字节   security   content   ack   32位   instance   通过   

 1 package Util;
 2 
 3 import java.security.MessageDigest;
 4 import java.security.NoSuchAlgorithmException;
 5 
 6 import sun.security.provider.MD5;
 7 
 8 public class MD5Util {
 9 private static final char[] hexDigest = new char[]{‘0‘,‘1‘,‘2‘,‘3‘,‘4‘,‘5‘,‘6‘,‘7‘,‘8‘,‘9‘,‘A‘,‘B‘,‘C‘,‘D‘,‘E‘,‘F‘};
10     
11     /**
12      * MD5加密算法
13      * @param content
14      * @return
15      */
16     public static String md5(String content)
17     {
18         try {
19             //1. 返回实现指定摘要算法的 MessageDigest 对象
20             MessageDigest md = MessageDigest.getInstance("MD5");
21             
22             //2.获取待加密字符串的byte数组
23             byte[] bytes = content.getBytes();
24             
25             //3.使用指定的 byte 数组更新摘要
26             md.update(bytes);
27             
28             //4.加密: 通过执行诸如填充之类的最终操作完成哈希计算
29             byte[] newBytes = md.digest();    //得到长度为16的字节数组
30             
31             //5.将长度为16的byte数组表示为32位十六进制数字
32             /*byte a = -81;
33             System.out.println(Integer.toBinaryString(a));      //111111111111111111111111  1010 1111  字节有效位8位
34             System.out.println(Integer.toBinaryString(a >>> 4 & 0xf));//111111111111111111111111  1010  无符号右移四位,与0xf做与运算,去24个1
35             System.out.println(Integer.toBinaryString(a & 0xf));//1111
36 */            
37             //System.out.println(Integer.toHexString(a >>> 4 & 0xf));
38             //System.out.println(Integer.toHexString(a & 0xf));
39             
40             char[] result = new char[newBytes.length * 2];//定义存储十六进制数结果的字符数组
41             int k = 0;
42             for (int i = 0; i < newBytes.length; i++) {
43                 byte c = newBytes[i];
44                 result[k++] = hexDigest[c >>> 4 & 0xf];//高四位
45                 result[k++] = hexDigest[c & 0xf]; //低四位
46             }
47             
48             return new String(result);
49             
50         } catch (NoSuchAlgorithmException e) {
51             e.printStackTrace();
52         }
53         return "";
54     }
55 }

 

将此类封装进工具包中,需要加密时即可取出使用

MD5加密算法(实际应用)

标签:工具   span   字节   security   content   ack   32位   instance   通过   

原文地址:http://www.cnblogs.com/ccw95/p/6035076.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!