一个MD5和SHA加密的实现类

  //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 }

 

posted @ 2013-05-12 21:22  十日十月  阅读(229)  评论(0编辑  收藏  举报