//Encrypt.java
1 import java.io.UnsupportedEncodingException;
2 import java.security.MessageDigest;
3 import java.security.NoSuchAlgorithmException;
4
5 /**
6 * 加密工具类
7 *
8 * md5加密出来的长度是32位
9 *
10 * sha加密出来的长度是40位
11 *
12 *
13 */
14 public class Encrypt {
15
16 /**
17 * 测试
18 *
19 * @param args
20 */
21 public static void main(String[] args) {
22 // md5加密测试
23 String md5_1 = md5("123456");
24 String md5_2 = md5("owl");
25 System.out.println(md5_1 + "\n" + md5_2);
26 // sha加密测试
27 String sha_1 = sha("123456");
28 String sha_2 = sha("owl");
29 System.out.println(sha_1 + "\n" + sha_2);
30
31 }
32
33 /**
34 * 加密
35 *
36 * @param inputText
37 * @return
38 */
39 public static String e(String inputText) {
40 return md5(inputText);
41 }
42
43 /**
44 * 二次加密
45 *
46 * @param inputText
47 * @return
48 */
49 public static String md5AndSha(String inputText) {
50 return sha(md5(inputText));
51 }
52
53 /**
54 * md5加密
55 *
56 * @param inputText
57 * @return
58 */
59 public static String md5(String inputText) {
60 return encrypt(inputText, "md5");
61 }
62
63 /**
64 * sha加密
65 *
66 * @param inputText
67 * @return
68 */
69 public static String sha(String inputText) {
70 return encrypt(inputText, "sha-1");
71 }
72
73 /**
74 * md5或者sha-1加密
75 *
76 * @param inputText
77 * 要加密的内容
78 * @param algorithmName
79 * 加密算法名称:md5或者sha-1,不区分大小写
80 * @return
81 */
82 private static String encrypt(String inputText, String algorithmName) {
83 if (inputText == null || "".equals(inputText.trim())) {
84 throw new IllegalArgumentException("请输入要加密的内容");
85 }
86 if (algorithmName == null || "".equals(algorithmName.trim())) {
87 algorithmName = "md5";
88 }
89 String encryptText = null;
90 try {
91 MessageDigest m = MessageDigest.getInstance(algorithmName);
92 m.update(inputText.getBytes("UTF8"));
93 byte s[] = m.digest();
94 // m.digest(inputText.getBytes("UTF8"));
95 return hex(s);
96 } catch (NoSuchAlgorithmException e) {
97 e.printStackTrace();
98 } catch (UnsupportedEncodingException e) {
99 e.printStackTrace();
100 }
101 return encryptText;
102 }
103
104 /**
105 * 返回十六进制字符串
106 *
107 * @param arr
108 * @return
109 */
110 private static String hex(byte[] arr) {
111 StringBuffer sb = new StringBuffer();
112 for (int i = 0; i < arr.length; ++i) {
113 sb.append(Integer.toHexString((arr[i] & 0xFF) | 0x100).substring(1, 3));
114 }
115 return sb.toString();
116 }
117
118 }