wangfeng 4 лет назад
Родитель
Сommit
6cf247c3e9

+ 50 - 0
cdssman-service/src/main/java/com/diagbot/enums/StatusEnum.java

@@ -0,0 +1,50 @@
+package com.diagbot.enums;
+
+import com.diagbot.core.KeyedNamed;
+import lombok.Setter;
+
+/**
+ * @author wangfeng
+ * @Description: TODO
+ * @date 2018年11月21日 下午2:31:42
+ */
+public enum StatusEnum implements KeyedNamed {
+    Disable(0, "禁用"),
+    Enable(1, "启用");
+
+    @Setter
+    private int key;
+
+    @Setter
+    private String name;
+
+    StatusEnum(int key, String name) {
+        this.key = key;
+        this.name = name;
+    }
+
+    public static StatusEnum getEnum(int key) {
+        for (StatusEnum item : StatusEnum.values()) {
+            if (item.key == key) {
+                return item;
+            }
+        }
+        return null;
+    }
+
+    public static String getName(int key) {
+        StatusEnum item = getEnum(key);
+        return item != null ? item.name : null;
+    }
+
+    @Override
+    public int getKey() {
+        return key;
+    }
+
+    @Override
+    public String getName() {
+        return name;
+    }
+}
+

+ 165 - 0
cdssman-service/src/main/java/com/diagbot/util/MD5Util.java

@@ -0,0 +1,165 @@
+package com.diagbot.util;
+
+import org.apache.commons.codec.binary.Hex;
+
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+import java.util.Random;
+
+/**
+ * @author wangfeng
+ * @Description:
+ * @date 2020-08-03 13:51
+ */
+public class MD5Util {
+    public static final String CODES = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
+
+    /**
+     * 使用系统默认字符源生成验证码
+     *
+     * @param verifySize 验证码长度
+     * @return
+     */
+    public static String generateCode(int verifySize) {
+        return generateCode(verifySize, CODES);
+    }
+
+    /**
+     * 使用指定源生成验证码
+     *
+     * @param verifySize 验证码长度
+     * @param sources    验证码字符源
+     * @return
+     */
+    public static String generateCode(int verifySize, String sources) {
+        if (sources == null || sources.length() == 0) {
+            sources = CODES;
+        }
+        int codesLen = sources.length();
+        Random rand = new Random(System.currentTimeMillis());
+        StringBuilder code = new StringBuilder(verifySize);
+        for (int i = 0; i < verifySize; i++) {
+            code.append(sources.charAt(rand.nextInt(codesLen - 1)));
+        }
+        return code.toString();
+    }
+
+    /**
+     * 普通MD5
+     *
+     * @param input
+     * @return
+     */
+    public static String MD5(String input) {
+        MessageDigest md5 = null;
+        try {
+            md5 = MessageDigest.getInstance("MD5");
+        } catch (NoSuchAlgorithmException e) {
+            return "check jdk";
+        } catch (Exception e) {
+            e.printStackTrace();
+            return "";
+        }
+        char[] charArray = input.toCharArray();
+        byte[] byteArray = new byte[charArray.length];
+
+        for (int i = 0; i < charArray.length; i++) {
+            byteArray[i] = (byte) charArray[i];
+        }
+        byte[] md5Bytes = md5.digest(byteArray);
+        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();
+    }
+
+    /**
+     * 加盐MD5
+     *
+     * @param password
+     * @return
+     */
+    public static String MD5Salt(String password) {
+        StringBuilder sb = new StringBuilder(16);
+        sb.append(generateCode(8)).append(generateCode(8));
+        int len = sb.length();
+        if (len < 16) {
+            for (int i = 0; i < 16 - len; i++) {
+                sb.append("0");
+            }
+        }
+        String salt = sb.toString();
+        password = md5Hex(password + salt);
+        char[] cs = new char[48];
+        for (int i = 0; i < 48; i += 3) {
+            cs[i] = password.charAt(i / 3 * 2);
+            char c = salt.charAt(i / 3);
+            cs[i + 1] = c;
+            cs[i + 2] = password.charAt(i / 3 * 2 + 1);
+        }
+        return new String(cs);
+    }
+
+    /**
+     * 校验加盐后是否和原文一致
+     *
+     * @param password
+     * @param md5
+     * @return
+     * @author daniel
+     * @time 2016-6-11 下午8:45:39
+     */
+    public static boolean verify(String password, String md5) {
+        char[] cs1 = new char[32];
+        char[] cs2 = new char[16];
+        for (int i = 0; i < 48; i += 3) {
+            cs1[i / 3 * 2] = md5.charAt(i);
+            cs1[i / 3 * 2 + 1] = md5.charAt(i + 2);
+            cs2[i / 3] = md5.charAt(i + 1);
+        }
+        String salt = new String(cs2);
+        return md5Hex(password + salt).equals(new String(cs1));
+    }
+
+    /**
+     * 获取十六进制字符串形式的MD5摘要
+     */
+    private static String md5Hex(String src) {
+        try {
+            MessageDigest md5 = MessageDigest.getInstance("MD5");
+            byte[] bs = md5.digest(src.getBytes());
+            return new String(new Hex().encode(bs));
+        } catch (Exception e) {
+            return null;
+        }
+    }
+
+
+    // 测试主函数
+    public static void main(String args[]) {
+        // 原文
+        String plaintext = "DingSai";
+        //  plaintext = "123456";
+        System.out.println("原始:" + plaintext);
+        System.out.println("普通MD5后:" + MD5Util.MD5(plaintext));
+
+        // 获取加盐后的MD5值
+        String ciphertext = MD5Util.MD5Salt(plaintext);
+        System.out.println("加盐后MD5:" + ciphertext);
+        System.out.println("是否是同一字符串:" + MD5Util.verify(plaintext, ciphertext));
+        /**
+         * 其中某次DingSai字符串的MD5值
+         */
+        String[] tempSalt = { "c4d980d6905a646d27c0c437b1f046d4207aa2396df6af86", "66db82d9da2e35c95416471a147d12e46925d38e1185c043", "61a718e4c15d914504a41d95230087a51816632183732b5a" };
+
+        for (String temp : tempSalt) {
+            System.out.println("是否是同一字符串:" + MD5Util.verify(plaintext, temp));
+        }
+    }
+}
+

Разница между файлами не показана из-за своего большого размера
+ 148 - 0
cdssman-service/src/main/java/com/diagbot/util/RSATokenIdUtil.java