puzhibing
2024-02-05 640ff18d2d7f4be02ddb7f8f75e899f05545eb98
cloud-server-course/src/main/java/com/dsh/course/util/MD5AndKL.java
@@ -3,110 +3,109 @@
import java.security.MessageDigest;
public class MD5AndKL {
   /**
    * MD5加码。32位
    *
    * @param inStr
    * @return
    */
   public static String MD5(String inStr) {
      MessageDigest md5 = null;
      try {
         md5 = MessageDigest.getInstance("MD5");
      } catch (Exception e) {
         throw new RuntimeException(e.toString());
      }
      byte[] md5Bytes = md5.digest(inStr.getBytes());
      StringBuffer hexValue = new StringBuffer();
      for (int i = 0; i < md5Bytes.length; i++) {
         int val = ((int) md5Bytes[i]) & 0xff;
         if (val < 16) {
            hexValue.append("0");
         }
         hexValue.append(Integer.toHexString(val));
      }
      return hexValue.toString();
   }
   /**
    * 可逆的加密算法
    *
    * @param inStr
    * @return
    */
   public static String KL(String inStr) {
      char[] a = inStr.toCharArray();
      for (int i = 0; i < a.length; i++) {
         a[i] = (char) (a[i] ^ 't');
      }
      String s = new String(a);
      return s;
   }
    /**
     * MD5加码。32位
     *
     * @param inStr
     * @return
     */
    public static String MD5(String inStr) {
        MessageDigest md5 = null;
        try {
            md5 = MessageDigest.getInstance("MD5");
        } catch (Exception e) {
            throw new RuntimeException(e.toString());
        }
        byte[] md5Bytes = md5.digest(inStr.getBytes());
        StringBuffer hexValue = new StringBuffer();
        for (int i = 0; i < md5Bytes.length; i++) {
            int val = ((int) md5Bytes[i]) & 0xff;
            if (val < 16) {
                hexValue.append("0");
            }
            hexValue.append(Integer.toHexString(val));
        }
        return hexValue.toString();
    }
   /**
    * 加密后解密
    *
    * @param inStr
    * @return
    */
   public static String JM(String inStr) {
      char[] a = inStr.toCharArray();
      for (int i = 0; i < a.length; i++) {
         a[i] = (char) (a[i] ^ 't');
      }
      String k = new String(a);
      return k;
   }
    /**
     * 可逆的加密算法
     *
     * @param inStr
     * @return
     */
    public static String KL(String inStr) {
        char[] a = inStr.toCharArray();
        for (int i = 0; i < a.length; i++) {
            a[i] = (char) (a[i] ^ 't');
        }
        String s = new String(a);
        return s;
    }
    /**
     * 加密后解密
     *
     * @param inStr
     * @return
     */
    public static String JM(String inStr) {
        char[] a = inStr.toCharArray();
        for (int i = 0; i < a.length; i++) {
            a[i] = (char) (a[i] ^ 't');
        }
        String k = new String(a);
        return k;
    }
    private static String byteArrayToHexString(byte b[]) {
        StringBuffer resultSb = new StringBuffer();
        for (int i = 0; i < b.length; i++)
            resultSb.append(byteToHexString(b[i]));
   private static String byteArrayToHexString(byte b[]) {
      StringBuffer resultSb = new StringBuffer();
      for (int i = 0; i < b.length; i++)
         resultSb.append(byteToHexString(b[i]));
        return resultSb.toString();
    }
      return resultSb.toString();
   }
    private static String byteToHexString(byte b) {
        int n = b;
        if (n < 0)
            n += 256;
        int d1 = n / 16;
        int d2 = n % 16;
        return hexDigits[d1] + hexDigits[d2];
    }
   private static String byteToHexString(byte b) {
      int n = b;
      if (n < 0)
         n += 256;
      int d1 = n / 16;
      int d2 = n % 16;
      return hexDigits[d1] + hexDigits[d2];
   }
    public static String MD5Encode(String origin, String charsetname) {
        String resultString = null;
        try {
            resultString = new String(origin);
            MessageDigest md = MessageDigest.getInstance("MD5");
            if (charsetname == null || "".equals(charsetname)) {
                resultString = byteArrayToHexString(md.digest(resultString.getBytes()));
            } else {
                resultString = byteArrayToHexString(md.digest(resultString.getBytes(charsetname)));
            }
        } catch (Exception exception) {
            exception.printStackTrace();
        }
        return resultString;
    }
   public static String MD5Encode(String origin, String charsetname) {
      String resultString = null;
      try {
         resultString = new String(origin);
         MessageDigest md = MessageDigest.getInstance("MD5");
         if (charsetname == null || "".equals(charsetname)){
            resultString = byteArrayToHexString(md.digest(resultString.getBytes()));
         }else{
            resultString = byteArrayToHexString(md.digest(resultString.getBytes(charsetname)));
         }
      } catch (Exception exception) {
         exception.printStackTrace();
      }
      return resultString;
   }
    private static final String hexDigits[] = {"0", "1", "2", "3", "4", "5",
            "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"};
   private static final String hexDigits[] = { "0", "1", "2", "3", "4", "5",
         "6", "7", "8", "9", "a", "b", "c", "d", "e", "f" };
   public static void main(String args[]) {
      System.out.println("MD5后再加密:" + KL(MD5("123456")));
      System.out.println(MD5("123456"));
      // System.out.println("加密:" + KL(MD5("123456")));
      // s = KL(s);
      // System.out.println("解密:" + KL("81dc9bdb52d04dc20036dbd8313ed055"));
      // System.out.println("解密:" + JM(KL(s)));
      // System.out.println("解密为MD5后的:" + KL(KL(MD5(s))));
      // System.out.println(JM("5d62957bb57d3e49dcf48a0df064be4c"));
      // System.out.println(MD5AndKL.KL(MD5AndKL.MD5("admin"+"87654321")));
   }
//   public static void main(String args[]) {
//
//      System.out.println("MD5后再加密:" + KL(MD5("123456")));
//      System.out.println(MD5("123456"));
//      // System.out.println("加密:" + KL(MD5("123456")));
//      // s = KL(s);
//      // System.out.println("解密:" + KL("81dc9bdb52d04dc20036dbd8313ed055"));
//      // System.out.println("解密:" + JM(KL(s)));
//      // System.out.println("解密为MD5后的:" + KL(KL(MD5(s))));
//      // System.out.println(JM("5d62957bb57d3e49dcf48a0df064be4c"));
//      // System.out.println(MD5AndKL.KL(MD5AndKL.MD5("admin"+"87654321")));
//   }
}