From 8e33cb9894c292bbc3e8742237393cdd8e270c49 Mon Sep 17 00:00:00 2001 From: free will <2647778488@qq.com> Date: Wed, 28 Jul 2021 13:39:09 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E4=BA=86BC=5FSM4=EF=BC=8C?= =?UTF-8?q?=E4=BB=A5=E6=94=AF=E6=8C=81=E5=AE=89=E5=8D=93=E8=B0=83=E7=94=A8?= =?UTF-8?q?SM4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/VMSConnection/Security/SM4/BC_SM4.java | 10 +++++++++- src/test/java/VMSConnection/TestAPI.java | 4 ++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/main/java/VMSConnection/Security/SM4/BC_SM4.java b/src/main/java/VMSConnection/Security/SM4/BC_SM4.java index 6bf6913..db10001 100644 --- a/src/main/java/VMSConnection/Security/SM4/BC_SM4.java +++ b/src/main/java/VMSConnection/Security/SM4/BC_SM4.java @@ -16,7 +16,15 @@ import java.security.*; */ public class BC_SM4 { static { - Security.addProvider(new BouncyCastleProvider()); + // 加载类的时候执行的静态代码块。只执行一次。 + // 参考博文:https://www.cnblogs.com/cherrylv/p/10688487.html + // 这么做是为了解决安卓不能使用正确版本的BC的问题 + System.out.println("run static code block"); + Security.removeProvider(BouncyCastleProvider.PROVIDER_NAME); + if (Security.getProvider(BouncyCastleProvider.PROVIDER_NAME) == null) { + System.out.println("runtime has no BouncyCastleProvider"); + Security.addProvider(new BouncyCastleProvider()); + } } public static final String ALGORITHM_NAME = "SM4"; public static final String ALGORITHM_NAME_ECB_PADDING = "SM4/ECB/PKCS5Padding"; diff --git a/src/test/java/VMSConnection/TestAPI.java b/src/test/java/VMSConnection/TestAPI.java index 3d0306c..ae05d84 100644 --- a/src/test/java/VMSConnection/TestAPI.java +++ b/src/test/java/VMSConnection/TestAPI.java @@ -34,8 +34,8 @@ public class TestAPI { // System.out.println(res); // } public static void main(String[] args){ - String username="/freexshka2"; - String email="25fjsygqnshkhk3s@163.com"; + String username="/frasgASJGXUa2"; + String email="25SAUUKDsiahHk3s@163.com"; int userID=1; // 模拟客户端生成自己的公钥私钥 BC_KeyManager bc_keyManager=new BC_KeyManager();