功能自测通过

This commit is contained in:
cheney
2026-05-14 17:31:42 +08:00
parent a89fd0c116
commit 7ea0325283
3 changed files with 123 additions and 4 deletions
@@ -6,8 +6,12 @@ import org.bouncycastle.util.encoders.Hex;
import org.springframework.stereotype.Service;
import java.nio.charset.StandardCharsets;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.PublicKey;
import java.security.Security;
import java.security.Signature;
import java.security.spec.X509EncodedKeySpec;
import java.util.Base64;
@Service
@@ -50,12 +54,39 @@ public class DeviceActivationService {
public String generateDeviceActivationPublicKey() {
try {
java.security.KeyPairGenerator keyGen = java.security.KeyPairGenerator.getInstance("EC", PROVIDER);
KeyPairGenerator keyGen = KeyPairGenerator.getInstance("EC", PROVIDER);
keyGen.initialize(256);
java.security.KeyPair keyPair = keyGen.generateKeyPair();
KeyPair keyPair = keyGen.generateKeyPair();
return Base64.getEncoder().encodeToString(keyPair.getPublic().getEncoded());
} catch (Exception e) {
throw new RuntimeException("生成设备激活公钥失败", e);
}
}
public KeyPair generateKeyPair() {
try {
KeyPairGenerator keyGen = KeyPairGenerator.getInstance("EC", PROVIDER);
keyGen.initialize(256);
return keyGen.generateKeyPair();
} catch (Exception e) {
throw new RuntimeException("生成密钥对失败", e);
}
}
public boolean verifySm2Signature(String data, String signatureBase64, String publicKeyBase64) {
try {
byte[] keyBytes = Base64.getDecoder().decode(publicKeyBase64);
X509EncodedKeySpec keySpec = new X509EncodedKeySpec(keyBytes);
java.security.KeyFactory keyFactory = java.security.KeyFactory.getInstance("EC", PROVIDER);
PublicKey publicKey = keyFactory.generatePublic(keySpec);
Signature signature = Signature.getInstance(SIGNATURE_ALGO, PROVIDER);
signature.initVerify(publicKey);
signature.update(data.getBytes(StandardCharsets.UTF_8));
byte[] signatureBytes = Base64.getDecoder().decode(signatureBase64);
return signature.verify(signatureBytes);
} catch (Exception e) {
throw new RuntimeException("SM2验签失败", e);
}
}
}