diff --git a/device-fingerprint-tool/src/main/java/com/sunyard/cisd/Main.java b/device-fingerprint-tool/src/main/java/com/sunyard/cisd/Main.java index 34162d3..0269019 100644 --- a/device-fingerprint-tool/src/main/java/com/sunyard/cisd/Main.java +++ b/device-fingerprint-tool/src/main/java/com/sunyard/cisd/Main.java @@ -36,18 +36,18 @@ public class Main { PublicKey publicKey = SM2Util.loadPublicKey("/sm2_public_key.pem"); String publicKeyPEM = SM2Util.publicKeyToPEM(publicKey); - SM2Util.writeFile(SIGN_FILE, signature); + SM3Util.writeFile(SIGN_FILE, signature); System.out.println("签名文件已保存: " + SIGN_FILE); - String signSm3 = SM2Util.sm3DigestHex(signature); - SM2Util.writeFile(SIGN_SM3_FILE, signSm3); + String signSm3 = SM3Util.sm3DigestHex(signature); + SM3Util.writeFile(SIGN_SM3_FILE, signSm3); System.out.println("签名SM3校验值已保存: " + SIGN_SM3_FILE + " (" + signSm3 + ")"); - SM2Util.writeFile(PUBLIC_KEY_FILE, publicKeyPEM); + SM3Util.writeFile(PUBLIC_KEY_FILE, publicKeyPEM); System.out.println("公钥文件已保存: " + PUBLIC_KEY_FILE); - String publicKeySm3 = SM2Util.sm3DigestHex(publicKeyPEM.getBytes(StandardCharsets.UTF_8)); - SM2Util.writeFile(PUBLIC_KEY_SM3_FILE, publicKeySm3); + String publicKeySm3 = SM3Util.sm3DigestHex(publicKeyPEM.getBytes(StandardCharsets.UTF_8)); + SM3Util.writeFile(PUBLIC_KEY_SM3_FILE, publicKeySm3); System.out.println("公钥SM3校验值已保存: " + PUBLIC_KEY_SM3_FILE + " (" + publicKeySm3 + ")"); boolean verified = SM2Util.verify(plainText.getBytes(StandardCharsets.UTF_8), signature, publicKey); diff --git a/device-fingerprint-tool/src/main/java/com/sunyard/cisd/SM2Util.java b/device-fingerprint-tool/src/main/java/com/sunyard/cisd/SM2Util.java index a4c2dc4..6870135 100644 --- a/device-fingerprint-tool/src/main/java/com/sunyard/cisd/SM2Util.java +++ b/device-fingerprint-tool/src/main/java/com/sunyard/cisd/SM2Util.java @@ -1,42 +1,14 @@ package com.sunyard.cisd; -import org.bouncycastle.asn1.ASN1ObjectIdentifier; -import org.bouncycastle.asn1.gm.GMObjectIdentifiers; -import org.bouncycastle.asn1.x509.AlgorithmIdentifier; -import org.bouncycastle.asn1.x9.X9ECParameters; -import org.bouncycastle.crypto.Digest; -import org.bouncycastle.crypto.engines.SM2Engine; -import org.bouncycastle.crypto.params.ECDomainParameters; -import org.bouncycastle.crypto.params.ECPrivateKeyParameters; -import org.bouncycastle.crypto.params.ECPublicKeyParameters; -import org.bouncycastle.crypto.params.ParametersWithRandom; -import org.bouncycastle.crypto.signers.SM2Signer; -import org.bouncycastle.crypto.digests.SM3Digest; import org.bouncycastle.jce.ECNamedCurveTable; import org.bouncycastle.jce.provider.BouncyCastleProvider; import org.bouncycastle.jce.spec.ECParameterSpec; -import org.bouncycastle.jce.spec.ECPrivateKeySpec; -import org.bouncycastle.jce.spec.ECPublicKeySpec; -import org.bouncycastle.math.ec.ECPoint; -import org.bouncycastle.util.BigIntegers; -import org.bouncycastle.util.encoders.Hex; import java.io.BufferedReader; -import java.io.File; -import java.io.FileOutputStream; import java.io.InputStream; import java.io.InputStreamReader; -import java.io.OutputStream; -import java.math.BigInteger; import java.nio.charset.StandardCharsets; -import java.security.KeyFactory; -import java.security.KeyPair; -import java.security.KeyPairGenerator; -import java.security.PrivateKey; -import java.security.PublicKey; -import java.security.SecureRandom; -import java.security.Security; -import java.security.Signature; +import java.security.*; import java.security.spec.PKCS8EncodedKeySpec; import java.security.spec.X509EncodedKeySpec; import java.util.Base64; @@ -159,32 +131,4 @@ public class SM2Util { pem.append("-----END PUBLIC KEY-----\n"); return pem.toString(); } - - public static byte[] sm3Digest(byte[] data) { - SM3Digest digest = new SM3Digest(); - digest.update(data, 0, data.length); - byte[] result = new byte[digest.getDigestSize()]; - digest.doFinal(result, 0); - return result; - } - - public static String sm3DigestHex(byte[] data) { - byte[] digest = sm3Digest(data); - return Hex.toHexString(digest); - } - - public static void writeFile(String filePath, byte[] content) throws Exception { - File file = new File(filePath); - File parentDir = file.getParentFile(); - if (parentDir != null && !parentDir.exists()) { - parentDir.mkdirs(); - } - try (OutputStream os = new FileOutputStream(file)) { - os.write(content); - } - } - - public static void writeFile(String filePath, String content) throws Exception { - writeFile(filePath, content.getBytes(StandardCharsets.UTF_8)); - } } diff --git a/device-fingerprint-tool/src/main/java/com/sunyard/cisd/SM3Util.java b/device-fingerprint-tool/src/main/java/com/sunyard/cisd/SM3Util.java new file mode 100644 index 0000000..f34a283 --- /dev/null +++ b/device-fingerprint-tool/src/main/java/com/sunyard/cisd/SM3Util.java @@ -0,0 +1,40 @@ +package com.sunyard.cisd; + +import org.bouncycastle.crypto.digests.SM3Digest; +import org.bouncycastle.util.encoders.Hex; + +import java.io.File; +import java.io.FileOutputStream; +import java.io.OutputStream; +import java.nio.charset.StandardCharsets; + +public class SM3Util { + + public static byte[] sm3Digest(byte[] data) { + SM3Digest digest = new SM3Digest(); + digest.update(data, 0, data.length); + byte[] result = new byte[digest.getDigestSize()]; + digest.doFinal(result, 0); + return result; + } + + public static String sm3DigestHex(byte[] data) { + byte[] digest = sm3Digest(data); + return Hex.toHexString(digest); + } + + public static void writeFile(String filePath, byte[] content) throws Exception { + File file = new File(filePath); + File parentDir = file.getParentFile(); + if (parentDir != null && !parentDir.exists()) { + parentDir.mkdirs(); + } + try (OutputStream os = new FileOutputStream(file)) { + os.write(content); + } + } + + public static void writeFile(String filePath, String content) throws Exception { + writeFile(filePath, content.getBytes(StandardCharsets.UTF_8)); + } +} diff --git a/device-fingerprint-tool/src/main/resources/sm2_private_key.pem b/device-fingerprint-tool/src/main/resources/sm2_private_key.pem index c8e37f3..aaa01b8 100644 --- a/device-fingerprint-tool/src/main/resources/sm2_private_key.pem +++ b/device-fingerprint-tool/src/main/resources/sm2_private_key.pem @@ -1,6 +1,6 @@ -----BEGIN PRIVATE KEY----- -MIGTAgEAMBMGByqGSM49AgEGCCqBHM9VAYItBHkwdwIBAQQgWFBMLowcSO3Pn8tP -KLszWBm/BSNPwSQvXErq1NiXkvqgCgYIKoEcz1UBgi2hRANCAARhkJ62bG2Gjg3h -LE5fSlyaYxjFNKEyehbFUcHQSOPwRL9pDwUD5bnqpo3jNNlVYQnaKV0khg8gKlBU -I3MM2oX4 +MIGTAgEAMBMGByqGSM49AgEGCCqBHM9VAYItBHkwdwIBAQQgyJA6u1jwC/MP+/K7 +ntiVLFB0XsldCIdY8Lift06UEaugCgYIKoEcz1UBgi2hRANCAAR7x0q/Bqj6JVwR +mfjccNmJ5Wd8ZuDZZnPudWT1UupNtg9aNaEYHYa52xANhiu3IzOELmTtfs/QRMRe +oabBvDAi -----END PRIVATE KEY----- diff --git a/device-fingerprint-tool/src/main/resources/sm2_public_key.pem b/device-fingerprint-tool/src/main/resources/sm2_public_key.pem index b40a46b..637abf7 100644 --- a/device-fingerprint-tool/src/main/resources/sm2_public_key.pem +++ b/device-fingerprint-tool/src/main/resources/sm2_public_key.pem @@ -1,4 +1,4 @@ -----BEGIN PUBLIC KEY----- -MFkwEwYHKoZIzj0CAQYIKoEcz1UBgi0DQgAEYZCetmxtho4N4SxOX0pcmmMYxTSh -MnoWxVHB0Ejj8ES/aQ8FA+W56qaN4zTZVWEJ2ildJIYPICpQVCNzDNqF+A== +MFkwEwYHKoZIzj0CAQYIKoEcz1UBgi0DQgAEe8dKvwao+iVcEZn43HDZieVnfGbg +2WZz7nVk9VLqTbYPWjWhGB2GudsQDYYrtyMzhC5k7X7P0ETEXqGmwbwwIg== -----END PUBLIC KEY-----