Prechádzať zdrojové kódy

MD5加密方法调整

xiaost 3 rokov pred
rodič
commit
f0337c2b65

+ 7 - 2
src/main/java/com/uas/eis/core/support/ApiSignLoginInterceptor.java

@@ -71,6 +71,10 @@ public class ApiSignLoginInterceptor extends HandlerInterceptorAdapter {
             throw new ApiSystemException(apiResult);
         }
 
+       /* String uuid = UUID.randomUUID().toString().trim().replaceAll("-", "");
+        String s = UUID.randomUUID().toString();
+        System.out.println("uuid"+s);*/
+
         String regex = "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$";
         if (!requestId.matches(regex)) {
             ApiResult apiResult = new ApiResult();
@@ -125,7 +129,8 @@ public class ApiSignLoginInterceptor extends HandlerInterceptorAdapter {
         }
         temp.append("&").append(ACCESS_SECRET).append("=").append(accessSecret);
         System.out.println(temp);
-        System.out.println(MD5Util.getEncryption(temp.toString()));
-        return MD5Util.getEncryption(temp.toString()).toUpperCase();
+        System.out.println(MD5Util.encrypt32Up(temp.toString()));
+       // System.out.println(MD5Util.getEncryption(temp.toString()));
+        return MD5Util.encrypt32Up(temp.toString()).toUpperCase();
     }
 }

+ 137 - 35
src/main/java/com/uas/eis/utils/MD5Util.java

@@ -1,35 +1,137 @@
-package com.uas.eis.utils;
-
-import java.security.MessageDigest;
-import java.security.NoSuchAlgorithmException;
-
-public class MD5Util {
-
-	/**
-	 * 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;
-		
-	}
-}
+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];
+	}
+}