sm3 工具
This commit is contained in:
parent
a73c28c165
commit
21576fd7d2
@ -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);
|
||||
|
||||
@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
@ -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));
|
||||
}
|
||||
}
|
||||
@ -1,6 +1,6 @@
|
||||
-----BEGIN PRIVATE KEY-----
|
||||
MIGTAgEAMBMGByqGSM49AgEGCCqBHM9VAYItBHkwdwIBAQQgWFBMLowcSO3Pn8tP
|
||||
KLszWBm/BSNPwSQvXErq1NiXkvqgCgYIKoEcz1UBgi2hRANCAARhkJ62bG2Gjg3h
|
||||
LE5fSlyaYxjFNKEyehbFUcHQSOPwRL9pDwUD5bnqpo3jNNlVYQnaKV0khg8gKlBU
|
||||
I3MM2oX4
|
||||
MIGTAgEAMBMGByqGSM49AgEGCCqBHM9VAYItBHkwdwIBAQQgyJA6u1jwC/MP+/K7
|
||||
ntiVLFB0XsldCIdY8Lift06UEaugCgYIKoEcz1UBgi2hRANCAAR7x0q/Bqj6JVwR
|
||||
mfjccNmJ5Wd8ZuDZZnPudWT1UupNtg9aNaEYHYa52xANhiu3IzOELmTtfs/QRMRe
|
||||
oabBvDAi
|
||||
-----END PRIVATE KEY-----
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
-----BEGIN PUBLIC KEY-----
|
||||
MFkwEwYHKoZIzj0CAQYIKoEcz1UBgi0DQgAEYZCetmxtho4N4SxOX0pcmmMYxTSh
|
||||
MnoWxVHB0Ejj8ES/aQ8FA+W56qaN4zTZVWEJ2ildJIYPICpQVCNzDNqF+A==
|
||||
MFkwEwYHKoZIzj0CAQYIKoEcz1UBgi0DQgAEe8dKvwao+iVcEZn43HDZieVnfGbg
|
||||
2WZz7nVk9VLqTbYPWjWhGB2GudsQDYYrtyMzhC5k7X7P0ETEXqGmwbwwIg==
|
||||
-----END PUBLIC KEY-----
|
||||
|
||||
Loading…
Reference in New Issue
Block a user