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

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

diff --git a/src/main/java/com/hx/util/rsa/RSASignature.java b/src/main/java/com/hx/util/rsa/RSASignature.java
new file mode 100644
index 0000000..ed41ab5
--- /dev/null
+++ b/src/main/java/com/hx/util/rsa/RSASignature.java
@@ -0,0 +1,124 @@
+package com.hx.util.rsa;
+
+import com.sun.org.apache.xml.internal.security.utils.Base64;
+
+import java.security.KeyFactory;
+import java.security.PrivateKey;
+import java.security.PublicKey;
+import java.security.spec.PKCS8EncodedKeySpec;
+import java.security.spec.X509EncodedKeySpec;
+
+
+
+/**
+ * RSA绛惧悕楠岀绫�
+ */
+public class RSASignature{
+
+    /**
+     * 绛惧悕绠楁硶
+     */
+    public static final String SIGN_ALGORITHMS = "SHA1WithRSA";
+
+    /**
+     * RSA绛惧悕
+     * @param content 寰呯鍚嶆暟鎹�
+     * @param privateKey 鍟嗘埛绉侀挜
+     * @param encode 瀛楃闆嗙紪鐮�
+     * @return 绛惧悕鍊�
+     */
+    public static String sign(String content, String privateKey, String encode) {
+        try {
+            PKCS8EncodedKeySpec priPKCS8 = new PKCS8EncodedKeySpec( Base64.decode(privateKey) );
+
+            KeyFactory keyf = KeyFactory.getInstance("RSA");
+            PrivateKey priKey = keyf.generatePrivate(priPKCS8);
+
+            java.security.Signature signature = java.security.Signature.getInstance(SIGN_ALGORITHMS);
+
+            signature.initSign(priKey);
+            signature.update( content.getBytes(encode));
+
+            byte[] signed = signature.sign();
+
+            return Base64.encode(signed);
+        }
+        catch (Exception e)
+        {
+            e.printStackTrace();
+        }
+
+        return null;
+    }
+
+    public static String sign(String content, String privateKey) {
+        try{
+            PKCS8EncodedKeySpec priPKCS8 	= new PKCS8EncodedKeySpec( Base64.decode(privateKey) );
+            KeyFactory keyf = KeyFactory.getInstance("RSA");
+            PrivateKey priKey = keyf.generatePrivate(priPKCS8);
+            java.security.Signature signature = java.security.Signature.getInstance(SIGN_ALGORITHMS);
+            signature.initSign(priKey);
+            signature.update( content.getBytes());
+            byte[] signed = signature.sign();
+            return Base64.encode(signed);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+
+    /**
+     * RSA楠岀鍚嶆鏌�
+     * @param content 寰呯鍚嶆暟鎹�
+     * @param sign 绛惧悕鍊�
+     * @param publicKey 鍒嗛厤缁欏紑鍙戝晢鍏挜
+     * @param encode 瀛楃闆嗙紪鐮�
+     * @return 甯冨皵鍊�
+     */
+    public static boolean doCheck(String content, String sign, String publicKey,String encode) {
+        try {
+            KeyFactory keyFactory = KeyFactory.getInstance("RSA");
+            byte[] encodedKey = Base64.decode(publicKey);
+            PublicKey pubKey = keyFactory.generatePublic(new X509EncodedKeySpec(encodedKey));
+
+
+            java.security.Signature signature = java.security.Signature
+                    .getInstance(SIGN_ALGORITHMS);
+
+            signature.initVerify(pubKey);
+            signature.update( content.getBytes(encode) );
+
+            boolean bverify = signature.verify( Base64.decode(sign) );
+            return bverify;
+
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+        return false;
+    }
+
+    public static boolean doCheck(String content, String sign, String publicKey) {
+        try {
+            KeyFactory keyFactory = KeyFactory.getInstance("RSA");
+            byte[] encodedKey = Base64.decode(publicKey);
+            PublicKey pubKey = keyFactory.generatePublic(new X509EncodedKeySpec(encodedKey));
+
+
+            java.security.Signature signature = java.security.Signature
+                    .getInstance(SIGN_ALGORITHMS);
+
+            signature.initVerify(pubKey);
+            signature.update( content.getBytes() );
+
+            boolean bverify = signature.verify( Base64.decode(sign) );
+            return bverify;
+
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+        return false;
+    }
+
+}

--
Gitblit v1.8.0