接口加密 3.1 maven工程引入以下依赖 org.bouncycastle bcprovjdk18on 1.78.1 commonscodec commonscodec 1.17.1 3.2 SM2工具类 import org.bouncycastle.jce.provider.BouncyCastleProvider; import javax.crypto.Cipher; import java.security.; import java.security.spec.ECGenParameterSpec; import java.security.spec.PKCS8EncodedKeySpec; import java.security.spec.X509EncodedKeySpec; public class SM2Util { static { Security.addProvider(new BouncyCastleProvider()); } // 生成SM2密钥对 public static KeyPair generateKeyPair() { try{ KeyPairGenerator keyPairGenerator KeyPairGenerator.getInstance("EC", "BC"); keyPairGenerator.initialize(new ECGenParameterSpec("sm2p256v1")); return keyPairGenerator.generateKeyPair(); } catch (Exception e) { //TODO 做异常处理 } } // 加密 public static byte[] encrypt(byte[] publicKey, byte[] data) { try{ PublicKey pubKey KeyFactory.getInstance("EC", "BC") .generatePublic(new X509EncodedKeySpec(publicKey)); Cipher cipher Cipher.getInstance("SM2", "BC"); cipher.init(Cipher.ENCRYPTMODE, pubKey); return cipher.doFinal(data); } catch (Exception e) { //TODO 做异常处理 } } // 解密 public static byte[] decrypt(byte[] privateKey, byte[] encryptedData) { try{ PrivateKey priKey KeyFactory.getInstance("EC", "BC") .generatePrivate(new PKCS8EncodedKeySpec(privateKey)); Cipher cipher Cipher.getInstance("SM2", "BC"); cipher.init(Cipher.DECRYPTMODE, priKey); return cipher.doFinal(encryptedData); } catch (Exception e) { //TODO 做异常处理 } } public static void main(String[] args) { KeyPair keyPair generateKeyPair(); byte[] a keyPair.getPublic().getEncoded(); byte[] b keyPair.getPrivate().getEncoded(); } }