浏览代码

增加相机sncode非对称加密工具

dsx 2 年之前
父节点
当前提交
708de57e17
共有 1 个文件被更改,包括 52 次插入5 次删除
  1. 52 5
      4dkankan-common-utils/src/main/java/com/fdkankan/common/util/StrExtUtil.java

+ 52 - 5
4dkankan-common-utils/src/main/java/com/fdkankan/common/util/StrExtUtil.java

@@ -3,9 +3,19 @@ package com.fdkankan.common.util;
 import cn.hutool.core.util.ReUtil;
 import cn.hutool.core.util.StrUtil;
 import com.fdkankan.common.constant.ErrorCode;
+
+import java.nio.charset.StandardCharsets;
+import java.security.KeyFactory;
+import java.security.PrivateKey;
+import java.security.PublicKey;
+import java.security.spec.PKCS8EncodedKeySpec;
+import java.security.spec.X509EncodedKeySpec;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 import jdk.nashorn.internal.runtime.regexp.joni.Regex;
+import org.apache.commons.codec.binary.Base64;
+
+import javax.crypto.Cipher;
 
 public class StrExtUtil extends StrUtil {
 
@@ -54,15 +64,52 @@ public class StrExtUtil extends StrUtil {
         return ReUtil.contains(regex, content);
     }
 
-    public static void main(String[] args) {
+    public static void main(String[] args) throws Exception {
+
+        String sdfsdf = encryptSnCode("sdfsdf");
 
-        String test = null;
-//        System.out.println(test.lastIndexOf("."));
-//        System.out.println(test.substring(test.lastIndexOf(".")));
+    }
+
+    public static String encryptSnCode(String snCode) throws Exception{
+
+        String publicKeyStr = "MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBALJ4i/c8ajAXpNDRx3yf7qtxiYuAtORd5oR4Zv849TdPXf8Kk+CZseiEwHpCMgRzlksHCkxmnyhqIADTMu3KYOkCAwEAAQ==";
+        String privateKeyStr = "MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAsniL9zxqMBek0NHHfJ/uq3GJi4C05F3mhHhm/zj1N09d/wqT4Jmx6ITAekIyBHOWSwcKTGafKGogANMy7cpg6QIDAQABAkB9df627BKeAlELtx0sf+WxQhx2JCGGFHizkUyeiHThzs16UhjVRbkM1XQx+AsKZng8g3k1dRjXq2uqPlRVUWyBAiEA4k3nqAoVks1+zvpgNBzp4t8FkFPAA6Ii8zsZhsecQFECIQDJ483hrakcOsyBE0KfKrQn1tQHvP42O9tB7D0HOuFJGQIgV4Zv+ULlMyD9UYnumVkxcEh3e2mY0w7rW41ZAxLCsPECIQCPDfJGpW0c6bUbCPC+I95AFINtcEeZWlSEo8aipuAXkQIgKH0c3eOKDVvxTCFRdmNPuNAsOv7NU8spoSUGR6o5WcU=";
+
+//        KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");
+//        keyPairGenerator.initialize(512);
+//        KeyPair keyPair = keyPairGenerator.generateKeyPair();
+//        RSAPublicKey aPublic = (RSAPublicKey) keyPair.getPublic();
+//        RSAPrivateKey aPrivate = (RSAPrivateKey) keyPair.getPrivate();
+//        System.out.println("publicKey : " + Base64.encodeBase64String(aPublic.getEncoded()));
+//        System.out.println("privateKey : " + Base64.encodeBase64String(aPrivate.getEncoded()));
+
+        PKCS8EncodedKeySpec pkcs8EncodedKeySpec = new PKCS8EncodedKeySpec(Base64.decodeBase64(privateKeyStr));
+        X509EncodedKeySpec x509EncodedKeySpec = new X509EncodedKeySpec(Base64.decodeBase64(publicKeyStr));
+        KeyFactory keyFactory = KeyFactory.getInstance("RSA");
+        Cipher cipher = Cipher.getInstance("RSA");
+        PrivateKey privateKey = keyFactory.generatePrivate(pkcs8EncodedKeySpec);
+        PublicKey publicKey = keyFactory.generatePublic(x509EncodedKeySpec);
+
+//        //私钥加密
+//        cipher.init(Cipher.ENCRYPT_MODE, privateKey);
+//        byte[] bytes = cipher.doFinal("aaaaaa".getBytes(StandardCharsets.UTF_8));
+//        System.out.println("私钥加密:" + Base64.encodeBase64String(bytes));
+//
+//        //公钥解密
+//        cipher.init(Cipher.DECRYPT_MODE, publicKey);
+//        byte[] bytes1 = cipher.doFinal(bytes);
+//        System.out.println("公钥解密:" + new String(bytes1));
 
-        System.out.println("123".equals(test));;
+        //公钥加密
+        cipher.init(Cipher.ENCRYPT_MODE, publicKey);
+        byte[] bytes2 = cipher.doFinal(snCode.getBytes(StandardCharsets.UTF_8));
+        System.out.println("公钥加密:" + Base64.encodeBase64String(bytes2));
 
+        cipher.init(Cipher.DECRYPT_MODE, privateKey);
+        byte[] bytes3 = cipher.doFinal(bytes2);
+        System.out.println(new String(bytes3));
 
+        return Base64.encodeBase64String(bytes2);
 
     }