diff --git a/device-fingerprint-tool/pom.xml b/device-fingerprint-tool/pom.xml index 8a5c03d..9ec253d 100644 --- a/device-fingerprint-tool/pom.xml +++ b/device-fingerprint-tool/pom.xml @@ -6,7 +6,7 @@ com.sunyard.cisd device-fingerprint-tool - 1.0.2 + 1.0.3 device-fingerprint-tool 设备指纹信息获取工具 diff --git a/device-fingerprint-tool/src/main/java/com/sunyard/cisd/device/tool/Main.java b/device-fingerprint-tool/src/main/java/com/sunyard/cisd/device/tool/Main.java index 651b26a..3d355cd 100644 --- a/device-fingerprint-tool/src/main/java/com/sunyard/cisd/device/tool/Main.java +++ b/device-fingerprint-tool/src/main/java/com/sunyard/cisd/device/tool/Main.java @@ -3,6 +3,9 @@ package com.sunyard.cisd.device.tool; import java.io.File; import java.io.InputStream; import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; import java.security.PublicKey; import java.util.Base64; import java.util.Map; @@ -41,7 +44,7 @@ public class Main { public static final String[] CMEP_TARGETS = { "/home/cmep4i/cmsp/CMEP-CMSP.jar", - "/home/cmep4i/cmtp/CMEP-CMSP.jar" + "/home/cmep4i/cmtp/CMEP-CMTP.jar" }; public static void main(String[] args) { @@ -194,21 +197,24 @@ public class Main { System.out.println("硬盘序列号: " + fingerprint.getHardDiskSerialNumber()); String plainText = buildPlainText(fingerprint); - System.out.println("\n当前拼接原文: " + plainText); - - String savedPlainText = SM3Util.readFile(FINGERPRINT_DATA_FILE).trim(); - System.out.println("保存的拼接原文: " + savedPlainText); - +// System.out.println("\n当前拼接原文: " + plainText); + byte[] signature = SM3Util.readFileBytes(SIGN_FILE); PublicKey publicKey = SM2Util.loadPublicKey(FINGERPRINT_PUBLIC_KEY_PATH); - boolean dataMatch = plainText.equals(savedPlainText); - boolean signatureVerified = SM2Util.verify(savedPlainText.getBytes(StandardCharsets.UTF_8), signature, publicKey); + + boolean signatureVerified = SM2Util.verify(plainText.getBytes(StandardCharsets.UTF_8), signature, publicKey); System.out.println("\n=== 验证结果 ==="); - System.out.println("设备信息匹配: " + dataMatch); System.out.println("签名验证: " + signatureVerified); - System.out.println("总体验证: " + (dataMatch && signatureVerified)); + if( Files.exists( Paths.get(FINGERPRINT_DATA_FILE)) ) { + String savedPlainText = SM3Util.readFile(FINGERPRINT_DATA_FILE).trim(); +// System.out.println("保存的拼接原文: " + savedPlainText); + boolean dataMatch = plainText.equals(savedPlainText); + System.out.println("设备信息与保存的信息匹配: " + dataMatch); + } + +// System.out.println("总体验证: " + (dataMatch && signatureVerified)); } private static void generateMAC() throws Exception { diff --git a/pom.xml b/pom.xml index 62f85ed..818d4a7 100644 --- a/pom.xml +++ b/pom.xml @@ -128,7 +128,7 @@ com.sunyard.cisd device-fingerprint-tool - 1.0.2 + 1.0.3 diff --git a/src/main/java/com/cisd/tms/modules/system/service/impl/SelfCheckServiceImpl.java b/src/main/java/com/cisd/tms/modules/system/service/impl/SelfCheckServiceImpl.java index 17b86ab..8f74ac0 100644 --- a/src/main/java/com/cisd/tms/modules/system/service/impl/SelfCheckServiceImpl.java +++ b/src/main/java/com/cisd/tms/modules/system/service/impl/SelfCheckServiceImpl.java @@ -12,6 +12,8 @@ import org.springframework.stereotype.Service; import java.io.File; import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Paths; import java.security.PublicKey; import java.util.ArrayList; import java.util.List; @@ -153,22 +155,21 @@ public class SelfCheckServiceImpl implements SelfCheckService { log.info("硬盘序列号: " + fingerprint.getHardDiskSerialNumber()); String plainText = buildPlainText(fingerprint); - log.info("\n当前拼接原文: " + plainText); - - String savedPlainText = SM3Util.readFile(FINGERPRINT_DATA_FILE).trim(); - log.info("保存的拼接原文: " + savedPlainText); byte[] signature = SM3Util.readFileBytes(SIGN_FILE); PublicKey publicKey = SM2Util.loadPublicKey(FINGERPRINT_PUBLIC_KEY_PATH); - - boolean dataMatch = plainText.equals(savedPlainText); - boolean signatureVerified = SM2Util.verify(savedPlainText.getBytes(StandardCharsets.UTF_8), signature, publicKey); + boolean signatureVerified = SM2Util.verify(plainText.getBytes(StandardCharsets.UTF_8), signature, publicKey); log.info("\n=== 验证结果 ==="); - log.info("设备信息匹配: " + dataMatch); log.info("签名验证: " + signatureVerified); - log.info("总体验证: " + (dataMatch && signatureVerified)); - return (dataMatch && signatureVerified); + if( Files.exists( Paths.get(FINGERPRINT_DATA_FILE)) ) { + String savedPlainText = SM3Util.readFile(FINGERPRINT_DATA_FILE).trim(); +// System.out.println("保存的拼接原文: " + savedPlainText); + boolean dataMatch = plainText.equals(savedPlainText); + log.info("设备信息与保存的信息匹配: " + dataMatch); + } + + return signatureVerified; } catch (Exception e) { log.error("[ERROR] {} - {}", CHECK_DEVICE_FINGERPRINT, e.getMessage()); return false;