From db74943b46ffb5245477894f394c368cc04f93e7 Mon Sep 17 00:00:00 2001
From: czt <czt18638530771@163.com>
Date: 星期二, 16 九月 2025 14:48:31 +0800
Subject: [PATCH] 调整品种获取

---
 src/main/java/com/fzzy/api/utils/RSAUtils.java |   47 ++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 36 insertions(+), 11 deletions(-)

diff --git a/src/main/java/com/fzzy/api/utils/RSAUtils.java b/src/main/java/com/fzzy/api/utils/RSAUtils.java
index c36f1cd..d94a600 100644
--- a/src/main/java/com/fzzy/api/utils/RSAUtils.java
+++ b/src/main/java/com/fzzy/api/utils/RSAUtils.java
@@ -12,6 +12,7 @@
 import java.security.interfaces.RSAPublicKey;
 import java.security.spec.PKCS8EncodedKeySpec;
 import java.security.spec.X509EncodedKeySpec;
+import java.util.Arrays;
 import java.util.Base64;
 import java.util.HashMap;
 import java.util.Map;
@@ -26,7 +27,7 @@
 
     private static final String CHARSET = "utf-8";
 
-    private static final int KEYSIZE = 2048;// 瀵嗛挜浣嶆暟
+    private static final int KEYSIZE = 1024;// 瀵嗛挜浣嶆暟
     private static final int RESERVE_BYTES = 11;
     private static final String ECB_PADDING = "RSA/ECB/PKCS1Padding";
 
@@ -35,6 +36,17 @@
 
     // 2048 bits 鐨� RSA 瀵嗛挜瀵癸紝鏈�澶у姞瀵嗘槑鏂囧ぇ灏�
     private static final int MAX_ENCRYPT_BLOCK = MAX_DECRYPT_BLOCK - RESERVE_BYTES;
+
+    public static void main(String[] args) throws Exception {
+        Map<String, Object> map = initKey(1024);
+
+        String privateKeyStr = getPrivateKeyStr(map);
+        log.info("-----绉侀挜={}", privateKeyStr);
+        System.out.println(privateKeyStr.length());
+
+        String publicKeyStr = getPublicKeyStr(map);
+        log.info("-----鍏挜={}", publicKeyStr);
+    }
 
     // 鐢熸垚瀵嗛挜瀵�
     public static Map<String, Object> initKey(int keysize) throws Exception {
@@ -113,24 +125,37 @@
      * @return 鍔犲瘑鍚庣殑瀵嗘枃
      */
     public static String encrypt(String text, String publicKeyStr) {
+        String result = "";
         try {
             log.info("鏄庢枃瀛楃涓蹭负:[{}]", text);
+            // 鍔犲瘑
             Cipher cipher = Cipher.getInstance(KEY_ALGORITHM);
             cipher.init(Cipher.ENCRYPT_MODE, getPublicKey(publicKeyStr));
-
-            // URLEncoder缂栫爜瑙e喅涓枃涔辩爜闂
-            byte[] data = text.getBytes(StandardCharsets.UTF_8);
-            // 鍔犲瘑鏃惰秴杩�117瀛楄妭灏辨姤閿欍�備负姝ら噰鐢ㄥ垎娈靛姞瀵嗙殑鍔炴硶鏉ュ姞瀵�
-            byte[] enBytes = null;
-            for (int i = 0; i < data.length; i += MAX_ENCRYPT_BLOCK) {
-                // 娉ㄦ剰瑕佷娇鐢�2鐨勫�嶆暟锛屽惁鍒欎細鍑虹幇鍔犲瘑鍚庣殑鍐呭鍐嶈В瀵嗘椂涓轰贡鐮�
-                byte[] doFinal = cipher.doFinal(ArrayUtils.subarray(data, i, i + MAX_ENCRYPT_BLOCK));
-                enBytes = ArrayUtils.addAll(enBytes, doFinal);
+            byte[] textArray = text.getBytes();
+            int textLength = textArray.length;
+            log.info("鍔犲瘑瀛楄妭鏁�={}", textLength);
+            // 鏈�澶у姞瀵嗗瓧鑺傛暟锛岃秴鍑烘渶澶у瓧鑺傛暟闇�瑕佸垎缁勫姞瀵�
+            int MAX_ENCRYPT_BLOCK = 117;
+            // 鏍囪瘑
+            int offSet = 0;
+            byte[] resultBytes = {};
+            byte[] cache = {};
+            while (textLength - offSet > 0) {
+                if (textLength - offSet > MAX_ENCRYPT_BLOCK) {
+                    cache = cipher.doFinal(textArray, offSet, MAX_ENCRYPT_BLOCK);
+                    offSet += MAX_ENCRYPT_BLOCK;
+                } else {
+                    cache = cipher.doFinal(textArray, offSet, textLength - offSet);
+                    offSet = textLength;
+                }
+                resultBytes = Arrays.copyOf(resultBytes, resultBytes.length + cache.length);
+                System.arraycopy(cache, 0, resultBytes, resultBytes.length - cache.length, cache.length);
             }
-            return Base64.getEncoder().encodeToString(enBytes);
+            result = Base64.getEncoder().encodeToString(resultBytes);
         } catch (Exception e) {
             throw new RuntimeException("鍔犲瘑瀛楃涓瞇" + text + "]鏃堕亣鍒板紓甯�", e);
         }
+        return result;
     }
 
     /**

--
Gitblit v1.9.3