Pārlūkot izejas kodu

2023-2-8 加密卡号方法优化.

chaiyunlong 2 gadi atpakaļ
vecāks
revīzija
1c02349be8

+ 1 - 19
zd-auth/src/main/java/com/zd/auth/controller/TokenController.java

@@ -209,26 +209,8 @@ public class TokenController {
         logger.error("学习机登录,加密前:" + username + ",设备编码:" + machineCode);
         if (UserConstants.USER_LOGIN_HXP == aioType) {
             // TODO 终端传参数据有问题,暂临时后端处理
-            String[] userchar = username.split("");
-            String placeholder = "";
-            for(int i=0;i<userchar.length;i++){
-                if(i==0){
-                    if(userchar[i].equals("0")){
-                        placeholder+="0";
-                    }else{
-                        break;
-                    }
-                }else{
-                    if(userchar[i].equals("0")){
-                        placeholder+="0";
-                    }else{
-                        break;
-                    }
-                }
-            }
-            long num = Long.parseLong(username,16);
             //通过des生成对称加密卡号
-            username = DESUtils.encrypt(placeholder+""+num+"");
+            username = DESUtils.encrypt(DESUtils.completeMissing(username));
 
 //            username = username.replaceAll("%00", "")
 //                    .replaceAll("%02", "")

+ 31 - 0
zd-common/common-core/src/main/java/com/zd/common/core/utils/DESUtils.java

@@ -153,4 +153,35 @@ public class DESUtils {
         }
         return sb.toString();
     }
+
+
+
+    /**
+     * 16进制转换10进制丢0,补全0
+     *
+     * @param cardNum 卡号
+     * @return
+     */
+    public static String completeMissing(String cardNum) {
+        String[] userchar = cardNum.split("");
+        String placeholder = "";
+        for(int i=0;i<userchar.length;i++){
+            if(i==0){
+                if(userchar[i].equals("0")){
+                    placeholder+="0";
+                }else{
+                    break;
+                }
+            }else{
+                if(userchar[i].equals("0")){
+                    placeholder+="0";
+                }else{
+                    break;
+                }
+            }
+        }
+        long num = Long.parseLong(cardNum,16);
+        return placeholder+num;
+    }
+
 }

+ 2 - 1
zd-modules/zd-chemical/src/main/java/com/zd/chemical/service/impl/HxpUserecordServiceImpl.java

@@ -234,7 +234,8 @@ public class HxpUserecordServiceImpl implements IHxpUserecordService {
         // 查询用户信息
         logger.info("双卡验证,用户卡号:" + userValidationVo.getCardNum());
 //        String cardNum = Long.toHexString(Long.parseLong(userValidationVo.getCardNum())).toUpperCase();
-        String cardNum = DESUtils.encrypt(userValidationVo.getCardNum());
+        // TODO 终端传参数据有问题,暂临时后端处理
+        String cardNum = DESUtils.encrypt(DESUtils.completeMissing(userValidationVo.getCardNum()));
 
         R<SysUser> user = remoteUserService.getUserInfoByCardNum(cardNum, SecurityConstants.INNER);