Преглед на файлове

Merge remote-tracking branch 'origin/push-5.4.3security' into push-dev

louhr преди 5 години
родител
ревизия
f78db703d5

+ 26 - 13
common-push/src/main/java/org/diagbot/common/push/cache/CacheFileManager.java

@@ -1,5 +1,6 @@
 package org.diagbot.common.push.cache;
 
+import org.diagbot.common.push.util.CryptUtil;
 import org.diagbot.pub.jdbc.MysqlJdbc;
 import org.diagbot.pub.utils.PropertiesUtil;
 import org.diagbot.pub.utils.security.EncrypDES;
@@ -87,9 +88,11 @@ public class CacheFileManager {
             String r2;
             String r3;
             while (rs.next()) {
-                r1 = rs.getString(1);
+//                r1 = rs.getString(1);
+                r1 = CryptUtil.decrypt_char(rs.getString(1));
                 r2 = rs.getString(2);
-                r3 = rs.getString(4);
+                r3 = CryptUtil.decrypt_char(rs.getString(4));
+//                r3 = rs.getString(4);
                 if (idMap.get(r1) == null) {
                     idMap.put(r1, r2);
                     nameMap.put(r1, r3);
@@ -121,8 +124,10 @@ public class CacheFileManager {
 
             fw = new FileWriter(path + "synonym.dict");
             while (rs.next()) {
-                r1 = rs.getString(1);
-                r2 = rs.getString(2);
+//                r1 = rs.getString(1);
+//                r2 = rs.getString(2);
+                r1 = CryptUtil.decrypt_char(rs.getString(1));
+                r2 = CryptUtil.decrypt_char(StringUtils.isEmpty(rs.getString(2))?"":rs.getString(2));
                 r3 = rs.getString(3);
                 fw.write(encrypDES.encrytor(r1 + "|" + r2 + "|" + r3));
                 fw.write("\n");
@@ -205,7 +210,8 @@ public class CacheFileManager {
             FileWriter fw = new FileWriter(path + "graph_diag_classify.dict");
             String r2, r3;
             while (rs.next()) {
-                r2 = rs.getString(1);//疾病名称
+//                r2 = rs.getString(1);//疾病名称
+                r2 = CryptUtil.decrypt_char(rs.getString(1));//疾病名称
                 r3 = rs.getString(2);//疾病类别
                 fw.write(encrypDES.encrytor(r2 + "|" + r3));
                 fw.write("\n");
@@ -221,7 +227,8 @@ public class CacheFileManager {
             fw = new FileWriter(path + "graph_sex_age_filter.dict");
             String r1, r4, r5;
             while (rs.next()) {
-                r1 = rs.getString(1);//术语名称
+//                r1 = rs.getString(1);//术语名称
+                r1 = CryptUtil.decrypt_char(rs.getString(1));//术语名称
                 r2 = rs.getString(3);//sexType 1:男 2:女 3:都可以
                 r3 = rs.getString(4);//min_age
                 r4 = rs.getString(5);//max_age
@@ -242,8 +249,10 @@ public class CacheFileManager {
             rs = st.executeQuery(sql);
             fw = new FileWriter(path + "graph_vital_convert.dict");
             while (rs.next()) {
-                r1 = rs.getString(1);//体征结果
-                r2 = rs.getString(2);//体征指标
+//                r1 = rs.getString(1);//体征结果
+//                r2 = rs.getString(2);//体征指标
+                r1 = CryptUtil.decrypt_char(rs.getString(1));//体征结果
+                r2 = CryptUtil.decrypt_char(rs.getString(2));//体征指标
                 fw.write(encrypDES.encrytor(r1 + "|" + r2));
                 fw.write("\n");
             }
@@ -318,7 +327,8 @@ public class CacheFileManager {
 
             String r1, r2, r3, r4, r5;
             while (rs.next()) {
-                r1 = rs.getString(1);
+//                r1 = rs.getString(1);
+                r1 = CryptUtil.decrypt_char(rs.getString(1));
                 r2 = rs.getString(2);
                 r3 = rs.getString(3);
                 r4 = rs.getString(4);
@@ -337,7 +347,7 @@ public class CacheFileManager {
 
             fw = new FileWriter(path + "bigdata_value_analyze.dict");
             while (rs.next()) {
-                fw.write(encrypDES.encrytor(rs.getString(1)));
+                fw.write(encrypDES.encrytor(CryptUtil.decrypt_char(rs.getString(1))));
                 fw.write("\n");
             }
             fw.close();
@@ -458,7 +468,8 @@ public class CacheFileManager {
             rs = st.executeQuery(sql);
             fw = new FileWriter(path + "bigdata_lpv_sex_age_filter.dict");//化验辅检体征相关文件
             while (rs.next()) {
-                r1 = rs.getString(1);
+//                r1 = rs.getString(1);
+                r1 = CryptUtil.decrypt_char(rs.getString(1));
                 r2 = rs.getString(2);
                 r3 = rs.getString(3);
                 r4 = rs.getString(4);
@@ -520,8 +531,10 @@ public class CacheFileManager {
         String r2 = "";
         Map<String, String> libraryMap = new HashMap<>(10);
         while (rs.next()) {
-            r1 = rs.getString(1);
-            r2 = rs.getString(2);
+//            r1 = rs.getString(1);
+//            r2 = rs.getString(2);
+            r1 = CryptUtil.decrypt_char(rs.getString(1));
+            r2 = CryptUtil.decrypt_char(rs.getString(2));
             if (libraryMap.get(r1) == null) {
                 libraryMap.put(r1, r2);
             } else if (isJoin && libraryMap.get(r1) != null) {

+ 101 - 0
common-push/src/main/java/org/diagbot/common/push/util/CryptUtil.java

@@ -0,0 +1,101 @@
+package org.diagbot.common.push.util;
+
+import java.util.List;
+
+/**
+ * @Description: 加解密工具类
+ * @author: gaodm
+ * @time: 2019/12/30 11:09
+ */
+public class CryptUtil {
+
+    private final static char EN_MAX = '\u0080';//128
+    private final static int MOVE_NUM = 2;
+    private final static char DE_MAX = EN_MAX + MOVE_NUM;
+
+    /**
+     * 加密,把一个字符串在原有的基础上+2
+     *
+     * @param data 需要解密的原字符串
+     * @return 返回解密后的新字符串
+     */
+    public static String encrypt_char(String data) {
+        char[] chars = data.toCharArray();
+        for (int i = 0; i < chars.length; i++) {
+            if (EN_MAX < chars[i]) {
+                chars[i] += MOVE_NUM;
+            }
+        }
+        return new String(chars);
+    }
+
+    /**
+     * 解密:把一个加密后的字符串在原有基础上-2
+     *
+     * @param data 加密后的字符串
+     * @return 返回解密后的新字符串
+     */
+    public static String decrypt_char(String data) {
+        char[] chars = data.toCharArray();
+        for (int i = 0; i < chars.length; i++) {
+            if (DE_MAX < chars[i]) {
+                chars[i] -= MOVE_NUM;
+            }
+        }
+        return new String(chars);
+    }
+
+
+    /**
+     * 对List<String>进行加密
+     *
+     * @param list 加密前的list
+     * @return 加密后的list
+     */
+    public static void encryptList(List<String> list) {
+        if (ListUtil.isNotEmpty(list)) {
+            for (int i = 0; i < list.size(); i++) {
+                list.set(i, CryptUtil.encrypt_char(list.get(i)));
+            }
+        }
+    }
+
+    /**
+     * 对List<String>进行解密
+     * @param list 解密前的list
+     * @return 解密后的list
+     */
+    public static void decryptList(List<String> list) {
+        if (ListUtil.isNotEmpty(list)) {
+            for (int i = 0; i < list.size(); i++) {
+                list.set(i, CryptUtil.decrypt_char(list.get(i)));
+            }
+        }
+    }
+
+
+
+    public static void main(String[] args) {
+        //加密英文
+        String data = "解密后:�dsfaa2132159-4331}~\u007F";
+        String charResult = encrypt_char(data);
+        System.out.println("加密后:" + charResult);
+        //解密
+        String charStr = decrypt_char(charResult);
+        System.out.println("解密后:" + charStr);
+
+
+        //加密中文
+        data = "跳梁小豆tlxd666,z";
+        String result = encrypt_char(data);
+        System.out.println("加密后:" + result);
+        String str1 = decrypt_char(result);
+        System.out.println("解密后:" + str1);
+
+//        int num = 32;
+//        while (num <= 128) {
+//            System.out.println((char) num + "  (Unicode编码对应的数字为:) " + num);
+//            num++;
+//        }
+    }
+}

+ 88 - 0
common-push/src/main/java/org/diagbot/common/push/util/ListUtil.java

@@ -0,0 +1,88 @@
+package org.diagbot.common.push.util;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * @Description: List 工具类
+ * @author: gaodm
+ * @date: 2017/12/28 15:36
+ * @version: V1.0
+ */
+public class ListUtil {
+    /**
+     * list的第一行
+     */
+    public static final int FIRST = 0;
+
+    private ListUtil() {
+
+    }
+
+    /**
+     * 创建List对象
+     *
+     * @param <E> 泛型,
+     * @return
+     */
+    public static <E> ArrayList<E> newArrayList() {
+        return new ArrayList<>();
+    }
+
+    /**
+     * 判断List是否为空
+     *
+     * @param list
+     * @return
+     */
+    public static boolean isEmpty(List list) {
+        if (null == list) {
+            return Boolean.TRUE;
+        }
+        if (list.isEmpty()) {
+            return Boolean.TRUE;
+        }
+        if (list.size() < 1) {
+            return Boolean.TRUE;
+        }
+        return Boolean.FALSE;
+    }
+
+    /**
+     * 判断List是否为非空
+     *
+     * @param list
+     * @return
+     */
+    public static boolean isNotEmpty(List list) {
+        return !isEmpty(list);
+    }
+
+    /**
+     * 获取List集合中第一个对象,前提是自己先判断这个list不会为空
+     *
+     * @param list
+     * @param <E>
+     * @return
+     */
+    public static <E> E firstEntity(List<E> list) {
+        if (isEmpty(list)) {
+            return null;
+        }
+        return list.get(FIRST);
+    }
+
+    public static <E> ArrayList<E> arrayToList(E[] strArray) {
+        ArrayList<E> arrayList = new ArrayList<>(strArray.length);
+        Collections.addAll(arrayList, strArray);
+        return arrayList;
+    }
+
+    public static void main(String[] args) throws Exception {
+        String[] i ={"A","B"};
+        List<String> o = arrayToList(i);
+        System.out.println("输入参数:"+ i);
+        System.out.println("输出参数:"+ o);
+    }
+}

+ 74 - 0
graphdb/src/main/java/org/diagbot/pub/CryptUtil.java

@@ -0,0 +1,74 @@
+package org.diagbot.pub;
+
+import java.util.List;
+
+/**
+ * @Description: 加解密工具类
+ * @author: gaodm
+ * @time: 2019/12/30 11:09
+ */
+public class CryptUtil {
+
+    private final static char EN_MAX = '\u0080';//128
+    private final static int MOVE_NUM = 2;
+    private final static char DE_MAX = EN_MAX + MOVE_NUM;
+
+    /**
+     * 加密,把一个字符串在原有的基础上+2
+     *
+     * @param data 需要解密的原字符串
+     * @return 返回解密后的新字符串
+     */
+    public static String encrypt_char(String data) {
+        char[] chars = data.toCharArray();
+        for (int i = 0; i < chars.length; i++) {
+            if (EN_MAX < chars[i]) {
+                chars[i] += MOVE_NUM;
+            }
+        }
+        return new String(chars);
+    }
+
+    /**
+     * 解密:把一个加密后的字符串在原有基础上-2
+     *
+     * @param data 加密后的字符串
+     * @return 返回解密后的新字符串
+     */
+    public static String decrypt_char(String data) {
+        char[] chars = data.toCharArray();
+        for (int i = 0; i < chars.length; i++) {
+            if (DE_MAX < chars[i]) {
+                chars[i] -= MOVE_NUM;
+            }
+        }
+        return new String(chars);
+    }
+
+
+
+
+    public static void main(String[] args) {
+        //加密英文
+        String data = "解密后:�dsfaa2132159-4331}~\u007F";
+        String charResult = encrypt_char(data);
+        System.out.println("加密后:" + charResult);
+        //解密
+        String charStr = decrypt_char(charResult);
+        System.out.println("解密后:" + charStr);
+
+
+        //加密中文
+        data = "B趃弓寺三田犴腸刅剰弍穽券洹梾";
+        String result = encrypt_char(data);
+        System.out.println("加密后:" +encrypt_char(result) );
+//        String str1 = decrypt_char(data);
+//        System.out.println("解密后:" + str1);
+
+//        int num = 32;
+//        while (num <= 128) {
+//            System.out.println((char) num + "  (Unicode编码对应的数字为:) " + num);
+//            num++;
+//        }
+    }
+}

+ 11 - 6
graphdb/src/main/java/org/diagbot/service/impl/KnowledgeServiceImpl.java

@@ -7,7 +7,7 @@ import org.diagbot.entity.node.LIS;
 import org.diagbot.entity.node.Symptom;
 import org.diagbot.mapper.KnowledgeMapper;
 import org.diagbot.pub.Ciku;
-import org.diagbot.pub.Label;
+import org.diagbot.pub.CryptUtil;
 import org.diagbot.pub.Type;
 import org.diagbot.pub.jdbc.MysqlJdbc;
 import org.diagbot.service.KnowledgeService;
@@ -33,6 +33,7 @@ import java.text.NumberFormat;
 import java.util.*;
 
 
+
 @Service
 public class    KnowledgeServiceImpl implements KnowledgeService {
     Logger logger = LoggerFactory.getLogger(KnowledgeServiceImpl.class);
@@ -53,9 +54,9 @@ public class    KnowledgeServiceImpl implements KnowledgeService {
     @Autowired
     private BiRepository biRepository;
     private List<BaseNode> baseNodes;
-    private String user = "teamdata";
-    private String password = "jiO2rfnYhg";
-    private String url = "jdbc:mysql://192.168.2.121:3306/med?useUnicode=true&characterEncoding=UTF-8";
+    private String user = "root";
+    private String password = "lantone";
+    private String url = "jdbc:mysql://192.168.2.236:3306/med?useUnicode=true&characterEncoding=UTF-8";
     private Pageable pageable;
     /**
      * 处理症状节点相关的申请
@@ -1568,7 +1569,7 @@ public class    KnowledgeServiceImpl implements KnowledgeService {
         Statement st = null;
         ResultSet rs = null;
         try {
-            String tongName, type,  isConcept,stand;
+            String tongName, type,  isConcept,stand = "";
             String sql = "SELECT name, type_id,is_concept,IF(is_concept=1,a.name,(select lib_name from kl_concept b where b.id = a.concept_id) ) lib_name \n" +
                     "from kl_library_info a where  a.is_deleted = 'N'\n" +
                     "and type_id in (1,5,12,13,14,16,17,18,35,70)";
@@ -1577,9 +1578,13 @@ public class    KnowledgeServiceImpl implements KnowledgeService {
             Map<String,String> detail =null;
             while (rs.next()) {
                 tongName = rs.getString(1);
+                tongName = CryptUtil.decrypt_char(tongName);
                 type = rs.getString(2);
                 isConcept = rs.getString(3);
-                stand = rs.getString(4);
+                if(StringUtils.isNotEmpty(rs.getString(4))){
+                    stand = CryptUtil.decrypt_char(rs.getString(4));
+                }
+
                 detail = new HashMap<>();
                 detail.put("isConcept",isConcept);
                 detail.put("stand",stand);

+ 7 - 5
nlp/src/main/java/org/diagbot/nlp/util/NlpCache.java

@@ -55,12 +55,14 @@ public class NlpCache {
         standard_info_synonym_map = new HashMap<>();
         for (String line : lines) {
             line_arr = org.apache.commons.lang3.StringUtils.split(line, "\\|");
-            map = standard_info_synonym_map.get(line_arr[2]);
-            if (map == null) {
-                map = new HashMap<>();
+            if (line_arr.length > 2) {
+                map = standard_info_synonym_map.get(line_arr[2]);
+                if (map == null) {
+                    map = new HashMap<>();
+                }
+                map.put(line_arr[0], line_arr[1]);
+                standard_info_synonym_map.put(line_arr[2], map);
             }
-            map.put(line_arr[0], line_arr[1]);
-            standard_info_synonym_map.put(line_arr[2], map);
         }
     }