From d6fb0646531172f23648441c224cdcccd721b894 Mon Sep 17 00:00:00 2001
From: xm <1271024303@qq.com>
Date: 星期一, 14 十二月 2020 09:59:01 +0800
Subject: [PATCH] 请合并代码,完成晾衣架最终功能。
---
ZigbeeApp/Shared/Phone/ZigBee/Common/SecuritySet.cs | 271 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 271 insertions(+), 0 deletions(-)
diff --git a/ZigbeeApp/Shared/Phone/ZigBee/Common/SecuritySet.cs b/ZigbeeApp/Shared/Phone/ZigBee/Common/SecuritySet.cs
new file mode 100755
index 0000000..12fed74
--- /dev/null
+++ b/ZigbeeApp/Shared/Phone/ZigBee/Common/SecuritySet.cs
@@ -0,0 +1,271 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.IO;
+using System.Security.Cryptography;
+using System.Text;
+using Org.BouncyCastle.Crypto.Parameters;
+using Org.BouncyCastle.Security;
+
+namespace ZigBee.Common
+{
+ /// <summary>
+ /// 瀹夊叏绫�
+ /// </summary>
+ public static class SecuritySet
+ {
+ /// <summary>
+ /// Aes鍔犲瘑鏁版嵁
+ /// 閲囩敤128浣嶏紙16瀛楄妭锛夊垎缁勫姞瀵嗗拰瑙e瘑鏁版嵁锛屽姞瀵嗘ā寮忎负CBC锛屽亸绉婚噺锛坕v锛夊拰瀵嗛挜涓�鑷达紝濉厖妯″紡閲囩敤pkcs5鎴杙kcs7锛屽姞瀵嗙粨鏋滆緭鍑篵ase64缂栫爜銆�
+ /// </summary>
+ /// <returns>The encrypt.</returns>
+ /// <param name="bytes">P to encrypt.</param>
+ /// <param name="key">Key.</param>
+ public static string AesEncrypt(byte []bytes, string key)
+ {
+ if (bytes==null)
+ return null;
+
+ //閰嶇疆AES鍔犲瘑Key(瀵嗛挜銆佸悜閲忋�佹ā寮忋�佸~鍏�)
+ var rm = new RijndaelManaged
+ {
+ Key = Encoding.UTF8.GetBytes(key),
+ IV = Encoding.UTF8.GetBytes(key),
+ Mode = CipherMode.CBC,
+ Padding = PaddingMode.PKCS7
+ };
+
+ //鍒涘缓AES鍔犲瘑鍣ㄥ璞�
+ var cTransform = rm.CreateEncryptor();
+
+ //浣跨敤AES灏嗘槑鏂囨祦杞垚瀵嗘枃瀛楄妭鏁扮粍
+ var resultArray = cTransform.TransformFinalBlock(bytes, 0, bytes.Length);
+
+ //灏咥ES鐢熸垚鐨勫瘑鏂囧瓧鑺傛暟缁勮浆鎴怋ase64瀛楃涓�
+ return Convert.ToBase64String(resultArray, 0, resultArray.Length);
+ }
+
+ // <summary>
+ /// Aes鍔犲瘑鏁版嵁
+ /// 閲囩敤128浣嶏紙16瀛楄妭锛夊垎缁勫姞瀵嗗拰瑙e瘑鏁版嵁锛屽姞瀵嗘ā寮忎负CBC锛屽亸绉婚噺锛坕v锛夊拰瀵嗛挜涓�鑷达紝濉厖妯″紡閲囩敤pkcs5鎴杙kcs7锛屽姞瀵嗙粨鏋滆緭鍑篵ase64缂栫爜銆�
+ /// </summary>
+ /// <returns>The encrypt.</returns>
+ /// <param name="bytes">P to encrypt.</param>
+ /// <param name="key">Key.</param>
+ public static byte []AesEncryptBytes(byte[] bytes, string key)
+ {
+ if (bytes == null)
+ return null;
+
+ //閰嶇疆AES鍔犲瘑Key(瀵嗛挜銆佸悜閲忋�佹ā寮忋�佸~鍏�)
+ var rm = new RijndaelManaged
+ {
+ Key = Encoding.UTF8.GetBytes(key),
+ IV = Encoding.UTF8.GetBytes(key),
+ Mode = CipherMode.CBC,
+ Padding = PaddingMode.PKCS7
+ };
+
+ //鍒涘缓AES鍔犲瘑鍣ㄥ璞�
+ var cTransform = rm.CreateEncryptor();
+
+ //浣跨敤AES灏嗘槑鏂囨祦杞垚瀵嗘枃瀛楄妭鏁扮粍
+ return cTransform.TransformFinalBlock(bytes, 0, bytes.Length);
+
+ //灏咥ES鐢熸垚鐨勫瘑鏂囧瓧鑺傛暟缁勮浆鎴怋ase64瀛楃涓�
+ //return Convert.ToBase64String(resultArray, 0, resultArray.Length);
+ }
+
+ /// <summary>
+ /// Aes 瑙e瘑鏁版嵁
+ /// </summary>
+ /// <returns>The decrypt.</returns>
+ /// <param name="pToDecrypt">P to decrypt.</param>
+ /// <param name="key">Key.</param>
+ public static byte []AesDecryptBytes(byte[] bytes, string key)
+ {
+ //AES瀵嗘枃Base64杞垚瀛楃涓�
+ var toEncryptArray = bytes;// Convert.FromBase64String(System.Text.Encoding.UTF8.GetString(bytes));
+
+ //閰嶇疆AES鍔犲瘑Key(瀵嗛挜銆佸悜閲忋�佹ā寮忋�佸~鍏�)
+ var rm = new RijndaelManaged
+ {
+ Key = Encoding.UTF8.GetBytes(key),
+ IV = Encoding.UTF8.GetBytes(key),
+ //Mode = CipherMode.ECB,
+ Mode = CipherMode.CBC,
+ Padding = PaddingMode.PKCS7
+ };
+
+ //鍒涘缓AES瑙e瘑鍣ㄥ璞�
+ var cTransform = rm.CreateDecryptor();
+
+ //浣跨敤AES灏嗗瘑鏂囨祦杞垚鏄庢枃鐨勫瓧鑺傛暟缁�
+ return cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
+
+ //杞垚瀛楃涓�
+ //return Encoding.UTF8.GetString(resultArray);
+ }
+
+ /// <summary>
+ /// Aes 瑙e瘑鏁版嵁
+ /// </summary>
+ /// <returns>The decrypt.</returns>
+ /// <param name="pToDecrypt">P to decrypt.</param>
+ /// <param name="key">Key.</param>
+ public static string AesDecrypt(byte []bytes, string key)
+ {
+ //AES瀵嗘枃Base64杞垚瀛楃涓�
+ var toEncryptArray = Convert.FromBase64String(System.Text.Encoding.UTF8.GetString(bytes));
+
+ //閰嶇疆AES鍔犲瘑Key(瀵嗛挜銆佸悜閲忋�佹ā寮忋�佸~鍏�)
+ var rm = new RijndaelManaged
+ {
+ Key = Encoding.UTF8.GetBytes(key),
+ IV = Encoding.UTF8.GetBytes(key),
+ //Mode = CipherMode.ECB,
+ Mode = CipherMode.CBC,
+ Padding = PaddingMode.PKCS7
+ };
+
+ //鍒涘缓AES瑙e瘑鍣ㄥ璞�
+ var cTransform = rm.CreateDecryptor();
+
+ //浣跨敤AES灏嗗瘑鏂囨祦杞垚鏄庢枃鐨勫瓧鑺傛暟缁�
+ var resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
+
+ //杞垚瀛楃涓�
+ return Encoding.UTF8.GetString(resultArray);
+ }
+
+ /// <summary>
+ /// DES杩涜鍔犲瘑
+ /// </summary>
+ /// <param name="passwordToEncrypt"></param>
+ /// <param name="key"></param>
+ /// <returns></returns>
+ public static string DESEncrypt(string passwordToEncrypt, string key)
+ {
+ try
+ {
+ using (DESCryptoServiceProvider des = new DESCryptoServiceProvider())
+ {
+ byte[] inputByteArray = Encoding.UTF8.GetBytes(passwordToEncrypt);
+ des.Key = ASCIIEncoding.ASCII.GetBytes(key);
+ des.IV = ASCIIEncoding.ASCII.GetBytes(key);
+
+ MemoryStream ms = new MemoryStream();
+
+ using (CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write))
+ {
+ cs.Write(inputByteArray, 0, inputByteArray.Length);
+ cs.FlushFinalBlock();
+ cs.Close();
+ }
+ string str = Convert.ToBase64String(ms.ToArray());
+ ms.Close();
+ return str;
+ }
+ }
+ catch
+ {
+ return "error:鍔犲瘑澶辫触!";
+ }
+ }
+
+ /// <summary>
+ /// DES杩涜瑙e瘑
+ /// </summary>
+ /// <param name="pToDecrypt"></param>
+ /// <param name="key"></param>
+ /// <returns></returns>
+ public static string DESDecrypt(string pToDecrypt, string key)
+ {
+ try
+ {
+ byte[] inputByteArray = Convert.FromBase64String(pToDecrypt);
+ using (DESCryptoServiceProvider des = new DESCryptoServiceProvider())
+ {
+ des.Key = ASCIIEncoding.ASCII.GetBytes(key);
+ des.IV = ASCIIEncoding.ASCII.GetBytes(key);
+
+ MemoryStream ms = new MemoryStream();
+ using (CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write))
+ {
+ cs.Write(inputByteArray, 0, inputByteArray.Length);
+ cs.FlushFinalBlock();
+ cs.Close();
+ }
+ string str = Encoding.UTF8.GetString(ms.ToArray());
+ ms.Close();
+ return str;
+ }
+ }
+ catch
+ {
+ return "error:瑙e瘑澶辫触!";
+ }
+ }
+
+ /// <summary>
+ ///鑾峰彇pem鍏挜姝f枃鍐呭
+ /// </summary>
+ /// <param name="filePath">绉侀挜璇佷功璺緞</param>
+ /// <returns></returns>
+ public static string publicKeyContent(string content)
+ {
+ try
+ {
+ string publickeyConent = content.Replace("-----BEGIN PUBLIC KEY-----", "").Replace("-----END PUBLIC KEY-----", "").Replace("\n", "").Replace("\r", "");//鍘绘帀璇佷功鐨勫ご閮ㄥ拰灏鹃儴
+ return publickeyConent;
+ }
+ catch (Exception ex)
+ {
+ var msg = $"鑾峰彇pem鍏挜姝f枃鍐呭鎶涘嚭寮傚父,{ex.Message}";
+ System.Console.WriteLine(msg);
+ return msg;
+ }
+ }
+
+ /// <summary>
+ /// 鎶婂叕閽ヨ浆鎹㈡垚.net鐨剎ml鏍煎紡
+ /// </summary>
+ /// <param name="privateKey">java鎻愪緵鐨勭涓夋柟鍏挜</param>
+ /// <returns></returns>
+ public static string ConvertToXmlPublicJavaKey(this RSA rsa, string publicJavaKey)
+ {
+ RsaKeyParameters publicKeyParam = (RsaKeyParameters)PublicKeyFactory.CreateKey(Convert.FromBase64String(publicJavaKey));
+ string xmlpublicKey = string.Format("<RSAKeyValue><Modulus>{0}</Modulus><Exponent>{1}</Exponent></RSAKeyValue>",
+ Convert.ToBase64String(publicKeyParam.Modulus.ToByteArrayUnsigned()),
+ Convert.ToBase64String(publicKeyParam.Exponent.ToByteArrayUnsigned()));
+ return xmlpublicKey;
+ }
+
+ /// <summary>
+ /// RSA鍔犲瘑
+ /// </summary>
+ /// <param name="sSource" >Source string</param>
+ /// <param name="sPublicKey" >public key</param>
+ /// <returns></returns>
+ public static string RSAEncrypt(string publickey, string content)
+ {
+ try
+ {
+ var pk = publicKeyContent(publickey);
+ var rsa = new RSACryptoServiceProvider();
+ var publickeyTemp = ConvertToXmlPublicJavaKey(rsa, pk);
+
+ byte[] cipherbytes;
+ rsa.FromXmlString(publickeyTemp);
+ cipherbytes = rsa.Encrypt(Encoding.UTF8.GetBytes(content), false);
+ return Convert.ToBase64String(cipherbytes);
+ }
+ catch(Exception ex)
+ {
+ var msg = $"RSA鍔犲瘑澶辫触_{ex.Message}";
+ System.Console.WriteLine(msg);
+ return msg;
+ }
+
+ }
+ }
+}
--
Gitblit v1.8.0