|
@@ -3,9 +3,12 @@ package com.zhongshu.payment.server.core.utils;
|
|
|
import com.zhongshu.payment.server.core.service.pay.impl.unionFrictionlessPay.config.UnionPaymentConfig;
|
|
import com.zhongshu.payment.server.core.service.pay.impl.unionFrictionlessPay.config.UnionPaymentConfig;
|
|
|
import lombok.SneakyThrows;
|
|
import lombok.SneakyThrows;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
+import org.bouncycastle.crypto.engines.SM2Engine;
|
|
|
|
|
+import org.bouncycastle.crypto.params.ECDomainParameters;
|
|
|
import org.bouncycastle.jce.ECNamedCurveTable;
|
|
import org.bouncycastle.jce.ECNamedCurveTable;
|
|
|
import org.bouncycastle.jce.provider.BouncyCastleProvider;
|
|
import org.bouncycastle.jce.provider.BouncyCastleProvider;
|
|
|
import org.bouncycastle.jce.spec.ECNamedCurveParameterSpec;
|
|
import org.bouncycastle.jce.spec.ECNamedCurveParameterSpec;
|
|
|
|
|
+import org.bouncycastle.jce.spec.ECPublicKeySpec;
|
|
|
|
|
|
|
|
import java.security.*;
|
|
import java.security.*;
|
|
|
import java.security.spec.X509EncodedKeySpec;
|
|
import java.security.spec.X509EncodedKeySpec;
|
|
@@ -22,17 +25,17 @@ public class Test {
|
|
|
@SneakyThrows
|
|
@SneakyThrows
|
|
|
public static void main(String[] args) {
|
|
public static void main(String[] args) {
|
|
|
Security.addProvider(new BouncyCastleProvider());
|
|
Security.addProvider(new BouncyCastleProvider());
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
// Generate key pair
|
|
// Generate key pair
|
|
|
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("EC", "BC");
|
|
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("EC", "BC");
|
|
|
ECNamedCurveParameterSpec ecSpec = ECNamedCurveTable.getParameterSpec("sm2p256v1");
|
|
ECNamedCurveParameterSpec ecSpec = ECNamedCurveTable.getParameterSpec("sm2p256v1");
|
|
|
keyPairGenerator.initialize(ecSpec);
|
|
keyPairGenerator.initialize(ecSpec);
|
|
|
KeyPair keyPair = keyPairGenerator.generateKeyPair();
|
|
KeyPair keyPair = keyPairGenerator.generateKeyPair();
|
|
|
- String pub1 = new String(keyPair.getPublic().getEncoded());
|
|
|
|
|
|
|
+ String pub1 = new String(keyPair.getPublic().getEncoded(), "utf-8");
|
|
|
String publicKeyBase64 = Base64.getEncoder().encodeToString(pub1.getBytes());
|
|
String publicKeyBase64 = Base64.getEncoder().encodeToString(pub1.getBytes());
|
|
|
log.info("publicKeyBase64: {}", publicKeyBase64);
|
|
log.info("publicKeyBase64: {}", publicKeyBase64);
|
|
|
PublicKey publicKey1 = keyPair.getPublic();
|
|
PublicKey publicKey1 = keyPair.getPublic();
|
|
|
- log.info("pub1: {}", keyPair.getPublic().getFormat());
|
|
|
|
|
|
|
+ log.info("pub1: {}", pub1);
|
|
|
|
|
|
|
|
// PublicKey publicKey = AesUtils.initializeSM3WithSM2PublicKey(UnionPaymentConfig.notifySecret);
|
|
// PublicKey publicKey = AesUtils.initializeSM3WithSM2PublicKey(UnionPaymentConfig.notifySecret);
|
|
|
// log.info("public: {} {}", publicKey, publicKeyBase64);
|
|
// log.info("public: {} {}", publicKey, publicKeyBase64);
|
|
@@ -47,7 +50,7 @@ public class Test {
|
|
|
signature.initSign(keyPair.getPrivate());
|
|
signature.initSign(keyPair.getPrivate());
|
|
|
signature.update("Hello, SM2".getBytes());
|
|
signature.update("Hello, SM2".getBytes());
|
|
|
byte[] sig = signature.sign();
|
|
byte[] sig = signature.sign();
|
|
|
- log.info("sig: {}", new String(sig));
|
|
|
|
|
|
|
+ log.info("sig: {}", AesUtils.base64Encode(new String(sig)));
|
|
|
|
|
|
|
|
// Verify
|
|
// Verify
|
|
|
signature.initVerify(keyPair.getPublic());
|
|
signature.initVerify(keyPair.getPublic());
|
|
@@ -56,7 +59,10 @@ public class Test {
|
|
|
|
|
|
|
|
|
|
|
|
|
String publicKeyString = "GAhPWQ8D4hXanneneaydaHYHiwn64p7y3A46Jpss87aKWsy5";
|
|
String publicKeyString = "GAhPWQ8D4hXanneneaydaHYHiwn64p7y3A46Jpss87aKWsy5";
|
|
|
- byte[] keyBytes = Base64.getDecoder().decode(publicKeyString);
|
|
|
|
|
|
|
+ byte[] keyBytes = Base64.getDecoder().decode(publicKeyBase64);
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ log.info("keyBytes: {}", new String(keyBytes, "UTF-8"));
|
|
|
X509EncodedKeySpec spec = new X509EncodedKeySpec(keyBytes);
|
|
X509EncodedKeySpec spec = new X509EncodedKeySpec(keyBytes);
|
|
|
KeyFactory keyFactory = KeyFactory.getInstance("ECDSA", "BC");
|
|
KeyFactory keyFactory = KeyFactory.getInstance("ECDSA", "BC");
|
|
|
PublicKey publicKey = keyFactory.generatePublic(spec);
|
|
PublicKey publicKey = keyFactory.generatePublic(spec);
|