From 75f59fa9a615e3584694e820ff83503e8b72ea16 Mon Sep 17 00:00:00 2001
From: zuoxiao <470321431@qq.com>
Date: 星期五, 14 三月 2025 16:55:31 +0800
Subject: [PATCH] refactor(generallibrary):重构网络请求模块
---
qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/net/RSAUtile.java | 55 +++++++++++++++++++++++++++++++++++++++++++++----------
1 files changed, 45 insertions(+), 10 deletions(-)
diff --git a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/net/RSAUtile.java b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/net/RSAUtile.java
index c2f1654..4d98b06 100644
--- a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/net/RSAUtile.java
+++ b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/net/RSAUtile.java
@@ -1,11 +1,22 @@
package com.dayu.qiheonlinelibrary.net;
+import java.io.ByteArrayInputStream;
+import java.io.UnsupportedEncodingException;
import java.nio.charset.StandardCharsets;
+import java.security.InvalidKeyException;
import java.security.KeyFactory;
+import java.security.NoSuchAlgorithmException;
import java.security.PublicKey;
+import java.security.cert.CertificateFactory;
+import java.security.cert.X509Certificate;
+import java.security.spec.InvalidKeySpecException;
import java.security.spec.X509EncodedKeySpec;
+import java.util.Base64;
+import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
+import javax.crypto.IllegalBlockSizeException;
+import javax.crypto.NoSuchPaddingException;
/**
* author: zuo
@@ -15,18 +26,42 @@
*/
public class RSAUtile {
- public static byte[] encryptByPublicKey(String data, String publicKey) throws Exception {
- // 寰楀埌鍏挜
- X509EncodedKeySpec keySpec = new X509EncodedKeySpec(publicKey.getBytes(StandardCharsets.UTF_8));
- KeyFactory kf = KeyFactory.getInstance("RSA");
- PublicKey keyPublic = kf.generatePublic(keySpec);
- // 鍔犲瘑鏁版嵁
- Cipher cp = Cipher.getInstance("RSA/ECB/PKCS1Padding");
- cp.init(Cipher.ENCRYPT_MODE, keyPublic);
- return cp.doFinal(data.getBytes(StandardCharsets.UTF_8));
- }
+ public static String encryptByPublicKey(String data, String publicKeyPEM) {
+ try {
+ // 寰楀埌鍏挜
+ publicKeyPEM = publicKeyPEM.replace("-----BEGIN PUBLIC KEY-----", "")
+ .replace("-----END PUBLIC KEY-----", "")
+ .replaceAll("\\s+", "");
+ // 瑙g爜Base64缂栫爜鐨勫叕閽�
+ byte[] decoded = new byte[0];
+ if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
+ decoded = Base64.getDecoder().decode(publicKeyPEM);
+ } else {
+ decoded = android.util.Base64.decode(publicKeyPEM, android.util.Base64.DEFAULT);
+ }
+ // 鐢熸垚鍏挜
+ X509EncodedKeySpec spec = new X509EncodedKeySpec(decoded);
+ KeyFactory keyFactory = KeyFactory.getInstance("RSA");
+ PublicKey publicKey = keyFactory.generatePublic(spec);
+ // 鍔犲瘑鏁版嵁
+ Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
+ cipher.init(Cipher.ENCRYPT_MODE, publicKey);
+ byte[] encryptedBytes = cipher.doFinal(data.getBytes("UTF-8"));
+ String encryptedData = null;
+ if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
+ encryptedData = Base64.getEncoder().encodeToString(encryptedBytes);
+ } else {
+ encryptedData = android.util.Base64.encodeToString(encryptedBytes, android.util.Base64.DEFAULT);
+ }
+ return encryptedData;
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return "";
+ }
+
}
--
Gitblit v1.8.0