From 610782d5127af072b204792f4c9e38911498e61e Mon Sep 17 00:00:00 2001
From: 南骏 池 <chiffly@163.com>
Date: 星期五, 25 四月 2025 09:02:19 +0800
Subject: [PATCH] 1.携客云初步demo

---
 service/QC/OAJyService.cs |   62 ++++++++++++++++++------------
 1 files changed, 37 insertions(+), 25 deletions(-)

diff --git a/service/QC/OAJyService.cs b/service/QC/OAJyService.cs
index cc9593b..a5191af 100644
--- a/service/QC/OAJyService.cs
+++ b/service/QC/OAJyService.cs
@@ -11,6 +11,13 @@
 using System.Security.Cryptography;
 using System.Text;
 using static Azure.Core.HttpHeader;
+using System.Security.Cryptography;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net.Security;
+using System.Security.Cryptography.X509Certificates;
+using Org.BouncyCastle.Crypto.Parameters;
+using Org.BouncyCastle.Security;
 
 namespace NewPdaSqlServer.service.QC;
 
@@ -23,34 +30,39 @@
     // private const string SPK = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApobID/gwmD9OofMG1gEcE94NCMeTYUq1cam/7ADZmxHCVpF143GaHWhqDdY0TTVbcUElsQ71DzAG2j3itWlIJBK5fVGwCo3sPpAvUDdKMh+Uivcp7yxdy/IDRA/PS4JARuEyM4cVJLhIOU2KnSlbIkheeoDkDgfaxu9kKrWnozJLiYraVTVDz9PdRX7fQdP+Zu/xB9txAGw4kvOm9HwgrzaSRdZEhisTJ5yyoNW/dLXtWKXA0cKhKOOIFu12TOrv/It6hl1ShTUuy79Pa51M9Oc2dEfVs1tluNXPWo1uFXQbBaJxdqZEJJlK7iW2uQFIao2O4XFHYThwy2+6116LtwIDAQAB";
     private const string HOST = "http://192.168.1.149:8099";
 
-    private const string SPK = @"-----BEGIN PUBLIC KEY-----
-MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApobID/gwmD9OofMG1gEc
-E94NCMeTYUq1cam/7ADZmxHCVpF143GaHWhqDdY0TTVbcUElsQ71DzAG2j3itWlI
-JBK5fVGwCo3sPpAvUDdKMh+Uivcp7yxdy/IDRA/PS4JARuEyM4cVJLhIOU2KnSlb
-IkheeoDkDgfaxu9kKrWnozJLiYraVTVDz9PdRX7fQdP+Zu/xB9txAGw4kvOm9Hwg
-rzaSRdZEhisTJ5yyoNW/dLXtWKXA0cKhKOOIFu12TOrv/It6hl1ShTUuy79Pa51M
-9Oc2dEfVs1tluNXPWo1uFXQbBaJxdqZEJJlK7iW2uQFIao2O4XFHYThwy2+6116L
-twIDAQAB
------END PUBLIC KEY-----";
+    private const string SPK = @"MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApobID/gwmD9OofMG1gEcE94NCMeTYUq1cam/7ADZmxHCVpF143GaHWhqDdY0TTVbcUElsQ71DzAG2j3itWlIJBK5fVGwCo3sPpAvUDdKMh+Uivcp7yxdy/IDRA/PS4JARuEyM4cVJLhIOU2KnSlbIkheeoDkDgfaxu9kKrWnozJLiYraVTVDz9PdRX7fQdP+Zu/xB9txAGw4kvOm9HwgrzaSRdZEhisTJ5yyoNW/dLXtWKXA0cKhKOOIFu12TOrv/It6hl1ShTUuy79Pa51M9Oc2dEfVs1tluNXPWo1uFXQbBaJxdqZEJJlK7iW2uQFIao2O4XFHYThwy2+6116LtwIDAQAB";
 
 
     public static class RsaHelper
     {
         public static string Encrypt(string plainText, string publicKeyPem)
         {
-            // 灏哖EM鏍煎紡鐨勫叕閽ヨ浆鎹负XML鏍煎紡
-            var rsa = RSA.Create();
-            rsa.ImportFromPem(publicKeyPem);  // 浣跨敤.NET 5+ 鍐呯疆PEM瑙f瀽鏂规硶
+            //// 灏哖EM鏍煎紡鐨勫叕閽ヨ浆鎹负XML鏍煎紡
+            //var rsa = RSA.Create();
+            //rsa.ImportFromPem(publicKeyPem);  // 浣跨敤.NET 5+ 鍐呯疆PEM瑙f瀽鏂规硶
 
-            var parameters = rsa.ExportParameters(false);
-            string publicKeyXml = $"<RSAKeyValue><Modulus>{Convert.ToBase64String(parameters.Modulus)}</Modulus><Exponent>{Convert.ToBase64String(parameters.Exponent)}</Exponent></RSAKeyValue>";
+            //var parameters = rsa.ExportParameters(false);
+            //string publicKeyXml = $"<RSAKeyValue><Modulus>{Convert.ToBase64String(parameters.Modulus)}</Modulus><Exponent>{Convert.ToBase64String(parameters.Exponent)}</Exponent></RSAKeyValue>";
 
-            using var rsaProvider = new RSACryptoServiceProvider();
-            rsaProvider.FromXmlString(publicKeyXml);  // 浣跨敤杞崲鍚庣殑XML鏍煎紡鍏挜
+            //using var rsaProvider = new RSACryptoServiceProvider();
+            //rsaProvider.FromXmlString(publicKeyXml);  // 浣跨敤杞崲鍚庣殑XML鏍煎紡鍏挜
 
-            var data = Encoding.UTF8.GetBytes(plainText);
-            var encrypted = rsaProvider.Encrypt(data, false);
-            return Convert.ToBase64String(encrypted);
+            //var data = Encoding.UTF8.GetBytes(plainText);
+            //var encrypted = rsaProvider.Encrypt(data, false);
+            //return Convert.ToBase64String(encrypted);
+
+            RsaKeyParameters publicKeyParam = (RsaKeyParameters)PublicKeyFactory.CreateKey(Convert.FromBase64String(publicKeyPem));
+            string XML = string.Format("<RSAKeyValue><Modulus>{0}</Modulus><Exponent>{1}</Exponent></RSAKeyValue>",
+            Convert.ToBase64String(publicKeyParam.Modulus.ToByteArrayUnsigned()),
+            Convert.ToBase64String(publicKeyParam.Exponent.ToByteArrayUnsigned()));
+            string encryptedContent = string.Empty;
+            using (RSACryptoServiceProvider rsa = new RSACryptoServiceProvider())
+            {
+                rsa.FromXmlString(XML);
+                byte[] encryptedData = rsa.Encrypt(Encoding.Default.GetBytes(plainText), false);
+                encryptedContent = Convert.ToBase64String(encryptedData);
+            }
+            return encryptedContent;
         }
     }
 
@@ -196,7 +208,7 @@
             //}
     
             // 鍔犲瘑澶勭悊
-            var userId = "FRadmin";
+            var userId = "1268";
             var encryptedUserId = RsaHelper.Encrypt(userId, SPK);
             string strToken = GetToken();
 
@@ -249,13 +261,13 @@
             var request = WebRequest.Create(url) as HttpWebRequest;
             request.Method = "POST";
             request.Timeout = 20000;
-            request.ContentType = "application/json; charset=utf-8";  // 淇敼涓篔SON鏍煎紡
+            request.ContentType = "application/x-www-form-urlencoded";  // 淇敼涓篔SON鏍煎紡
 
             // 鏋勫缓璇锋眰澶�
-            request.Headers.Add("appid", APPID);
-            request.Headers.Add("token", token);
-            request.Headers.Add("Content-Type", APPID);
-            request.Headers.Add("userId", encryptedUserId);
+            request.Headers.Set("appid", APPID);
+            request.Headers.Set("token", token);
+            request.Headers.Set("Content-Type", "application/x-www-form-urlencoded");
+            request.Headers.Set("userId", encryptedUserId);
             // 鍋囪闇�瑕佸姞瀵嗙殑userid浠庡叾浠栧湴鏂硅幏鍙栵紝杩欓噷闇�瑕佽ˉ鍏呰幏鍙栭�昏緫
 
             // 鏋勫缓璇锋眰浣�

--
Gitblit v1.9.3