| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- package com.uas.eis.utils;
- import java.security.MessageDigest;
- import java.security.NoSuchAlgorithmException;
- public class MD5Util {
- // 全局数组
- private final static String[] strDigits = { "0", "1", "2", "3", "4", "5",
- "6", "7", "8", "9", "a", "b", "c", "d", "e", "f" };
- /**
- * MD5加密
- * @param message
- * @return
- */
- public static String getEncryption(String message){
- String result = "";
- if(message != null){
- try {
- MessageDigest md = MessageDigest.getInstance("MD5"); //指定加密方式
- //加密
- byte[] bytes = md.digest(message.getBytes());
- for(int i = 0; i < bytes.length; i++){
- // 将整数转换成十六进制形式的字符串 这里与0xff进行与运算的原因是保证转换结果为32位
- String str = Integer.toHexString(bytes[i] & 0xFF);
- if(str.length() == 1){
- str += "F";
- }
- result += str;
- }
- } catch (NoSuchAlgorithmException e) {
- e.printStackTrace();
- }
- }
- return result;
-
- }
- public static String encodeByMD5(String originString) {
- if (originString != null) {
- try {
- MessageDigest md = MessageDigest.getInstance("MD5");
- byte[] results = md.digest(originString.getBytes());
- String resultString = byteArrayToHexString(results);
- return resultString.toUpperCase();
- } catch (Exception ex) {
- ex.printStackTrace();
- }
- }
- return null;
- }
- public static String byteArrayToHexString(byte[] bArr) {
- StringBuffer sb = new StringBuffer(bArr.length);
- String sTmp;
- for (int i = 0; i < bArr.length; i++) {
- sTmp = Integer.toHexString(0xFF & bArr[i]);
- if (sTmp.length() < 2){
- sb.append(0);
- }
- sb.append(sTmp.toUpperCase());
- }
- return sb.toString();
- }
- /**
- * hex字符串转byte数组
- * @param inHex 待转换的Hex字符串
- * @return 转换后的byte数组结果
- */
- public static byte[] hexToByteArray(String inHex){
- int hexlen = inHex.length();
- byte[] result;
- if (hexlen % 2 == 1){
- //奇数
- hexlen++;
- result = new byte[(hexlen/2)];
- inHex="0"+inHex;
- }else {
- //偶数
- result = new byte[(hexlen/2)];
- }
- int j=0;
- for (int i = 0; i < hexlen; i+=2){
- result[j]=(byte)Integer.parseInt(inHex.substring(i,i+2),16);
- j++;
- }
- return result;
- }
- public static String encrypt32(String strObj) {
- String resultString = null;
- try {
- resultString = new String(strObj);
- MessageDigest md = MessageDigest.getInstance("MD5");
- // md.digest() 该函数返回值为存放哈希值结果的byte数组
- resultString = byteToString(md.digest(strObj.getBytes()));
- } catch (NoSuchAlgorithmException ex) {
- ex.printStackTrace();
- }
- return resultString;
- }
- public static String encrypt32Up(String strObj){
- return encrypt32(strObj).toUpperCase();
- }
- public static String encrypt16(String strObj){
- return encrypt32(strObj).substring(8,24);
- }
- public static String encrypt16Up(String strObj){
- return encrypt32Up(strObj).substring(8,24);
- }
- // 转换字节数组为16进制字串
- private static String byteToString(byte[] bByte) {
- StringBuffer sBuffer = new StringBuffer();
- for (int i = 0; i < bByte.length; i++) {
- sBuffer.append(byteToArrayString(bByte[i]));
- }
- return sBuffer.toString();
- }
- // 返回形式为数字跟字符串
- private static String byteToArrayString(byte bByte) {
- int iRet = bByte;
- if (iRet < 0) {
- iRet += 256;
- }
- int iD1 = iRet / 16;
- int iD2 = iRet % 16;
- return strDigits[iD1] + strDigits[iD2];
- }
- }
|