From f96f3900e2ec516e10fa9143f60e7e64e500d2a0 Mon Sep 17 00:00:00 2001
From: chenjiahe <763432473@qq.com>
Date: 星期四, 31 三月 2022 16:31:38 +0800
Subject: [PATCH] 新增RSA的校验和生成签名方法

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

diff --git a/src/main/java/com/hx/util/rsa/RSASignature.java b/src/main/java/com/hx/util/rsa/RSASignature.java
index ae1d4ba..593f276 100644
--- a/src/main/java/com/hx/util/rsa/RSASignature.java
+++ b/src/main/java/com/hx/util/rsa/RSASignature.java
@@ -1,11 +1,13 @@
 package com.hx.util.rsa;
 
+import com.hx.util.StringUtils;
+
 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.*;
 
 
 /**
@@ -25,7 +27,7 @@
      * @param encode 瀛楃闆嗙紪鐮�
      * @return 绛惧悕鍊�
      */
-    public static String sign(String content, String privateKey, String encode) {
+    public static String createSign(String content, String privateKey, String encode) {
         try {
             PKCS8EncodedKeySpec priPKCS8 = new PKCS8EncodedKeySpec( Base64.decode(privateKey) );
 
@@ -49,7 +51,7 @@
         return null;
     }
 
-    public static String sign(String content, String privateKey) {
+    public static String createSign(String content, String privateKey) {
         try{
             PKCS8EncodedKeySpec priPKCS8 	= new PKCS8EncodedKeySpec( Base64.decode(privateKey) );
             KeyFactory keyf = KeyFactory.getInstance("RSA");
@@ -65,6 +67,44 @@
         return null;
     }
 
+
+    /**
+     * RSA楠岀鍚嶆鏌�
+     * @param params 鎵�鏈夊弬鏁�
+     * @param publicKey 鍒嗛厤缁欏紑鍙戝晢鍏挜
+     * @param encode 瀛楃闆嗙紪鐮�
+     * @return 甯冨皵鍊�
+     */
+    public static boolean doCheck(Map<String,String> params, String publicKey, String encode) {
+        String sign = params.get("sign");
+        if(sign == null){
+            return false;
+        }
+        String content = getSignCheckContent(params);
+        return doCheck( content, sign, publicKey, encode);
+    }
+
+    public static String getSignCheckContent(Map<String, String> params) {
+        if (params == null) {
+            return null;
+        } else {
+            params.remove("sign");
+            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);
+                String value = (String)params.get(key);
+                if(StringUtils.isEmpty(value)){
+                    continue;
+                }
+                content.append(i == 0 ? "" : "&").append(key).append("=").append(value);
+            }
+            return content.toString();
+        }
+    }
+
     /**
      * RSA楠岀鍚嶆鏌�
      * @param content 寰呯鍚嶆暟鎹�

--
Gitblit v1.8.0