From 6b479c5774ed3d6e2dc92693ddeda3e7ad1494db Mon Sep 17 00:00:00 2001
From: Andru <769883346@qq.com>
Date: 星期一, 23 十月 2023 17:34:08 +0800
Subject: [PATCH] 添加获客方法

---
 src/main/java/com/hx/util/rsa/RSASignature.java |   73 ++++++++++++++++++++++++++++++++++++
 1 files changed, 72 insertions(+), 1 deletions(-)

diff --git a/src/main/java/com/hx/util/rsa/RSASignature.java b/src/main/java/com/hx/util/rsa/RSASignature.java
index dd6f32a..cf7a0a5 100644
--- a/src/main/java/com/hx/util/rsa/RSASignature.java
+++ b/src/main/java/com/hx/util/rsa/RSASignature.java
@@ -1,13 +1,22 @@
 package com.hx.util.rsa;
 
 import com.hx.util.StringUtils;
+import org.bouncycastle.asn1.ASN1Encodable;
+import org.bouncycastle.asn1.ASN1ObjectIdentifier;
+import org.bouncycastle.asn1.ASN1Primitive;
+import org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers;
+import org.bouncycastle.asn1.pkcs.PrivateKeyInfo;
+import org.bouncycastle.asn1.x509.AlgorithmIdentifier;
 
 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.*;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
 
 
 /**
@@ -49,6 +58,43 @@
         }
 
         return null;
+    }
+
+    /**
+     * RSA绛惧悕Pkcs1ToPkcs8
+     * @param rawKey 鍟嗘埛绉侀挜
+     * @return 绛惧悕鍊�
+     */
+    public static String formatPkcs1ToPkcs8(String rawKey) {
+        if (!StringUtils.isEmpty(rawKey)) {
+            try {
+                //灏咮ASE64缂栫爜鐨勭閽ュ瓧绗︿覆杩涜瑙g爜
+                byte[] encodeByte = Base64.decode(rawKey);
+                AlgorithmIdentifier algorithmIdentifier = new AlgorithmIdentifier(PKCSObjectIdentifiers.pkcs8ShroudedKeyBag);
+                PrivateKeyInfo privKeyInfo = new PrivateKeyInfo(algorithmIdentifier, ASN1ObjectIdentifier.fromByteArray(encodeByte));
+                return Base64.encode(privKeyInfo.getEncoded());
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
+        return null;
+    }
+    /**
+     * RSA绛惧悕Pkcs8ToPkcs1
+     * @param rawKey 鍟嗘埛绉侀挜
+     * @return 绛惧悕鍊�
+     */
+    public static String formatPkcs8ToPkcs1(String rawKey){
+        try {
+            byte[] encodeByte = Base64.decode(rawKey);
+            PrivateKeyInfo pki = PrivateKeyInfo.getInstance(encodeByte);
+            ASN1Encodable asn = pki.parsePrivateKey();
+            ASN1Primitive primitive = asn.toASN1Primitive();
+            return Base64.encode(primitive.getEncoded());
+        } catch (Exception e) {
+            e.printStackTrace();
+            return null;
+        }
     }
 
     public static String createSign(String content, String privateKey) {
@@ -121,4 +167,29 @@
         return false;
     }
 
+    /**
+     * ASCII鐮侀�掑鎺掑簭锛堝墧闄ょ┖鍊硷級
+     * @param params
+     * @return
+     */
+    public static String getSignCheckContent(Map<String, String> params) {
+        if (params == null) {
+            return null;
+        } else {
+            StringBuilder content = new StringBuilder();
+            List<String> keys = new ArrayList(params.keySet());
+            Collections.sort(keys);
+
+            for(int i = 0; i < keys.size(); ++i) {
+                String key = (String)keys.get(i);
+                Object value = params.get(key);
+                if(value == null || StringUtils.isEmpty(value.toString())){
+                    continue;
+                }
+                content.append(i == 0 ? "" : "&").append(key).append("=").append(value);
+            }
+            return content.toString();
+        }
+    }
+
 }

--
Gitblit v1.8.0