| 
									
										
										
										
											2025-08-31 14:59:14 +00:00
										 |  |  | using System; | 
					
						
							|  |  |  | using System.Collections; | 
					
						
							|  |  |  | using System.Collections.Generic; | 
					
						
							|  |  |  | using System.Security.Cryptography; | 
					
						
							|  |  |  | using System.Text; | 
					
						
							|  |  |  | using UnityEngine; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-09-01 10:32:50 +00:00
										 |  |  | namespace WZ | 
					
						
							| 
									
										
										
										
											2025-08-31 14:59:14 +00:00
										 |  |  | { | 
					
						
							|  |  |  |     public static class EncryptionUtils | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         private static string GetKey(string packageName) | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             var keyBytes = Encoding.UTF8.GetBytes(packageName); | 
					
						
							|  |  |  |             byte[] keyHash; | 
					
						
							|  |  |  |             using (var md5 = MD5.Create()) | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 keyHash = md5.ComputeHash(keyBytes); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |             return BitConverter.ToString(keyHash).Replace("-", "").ToUpper(); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |          | 
					
						
							|  |  |  |         // Aes 加密 | 
					
						
							|  |  |  |         public static string AesEncrypt(string packageName, string content) | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             string key = GetKey(packageName); | 
					
						
							|  |  |  |             var contentBytes = Encoding.UTF8.GetBytes(content); | 
					
						
							|  |  |  |             var keyBytes = Encoding.UTF8.GetBytes(key); | 
					
						
							|  |  |  |             byte[] keyHash; | 
					
						
							|  |  |  |             using (var md5 = MD5.Create()) | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 keyHash = md5.ComputeHash(keyBytes); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |             using var aesAlg = Aes.Create(); | 
					
						
							|  |  |  |             aesAlg.Key = keyHash; | 
					
						
							|  |  |  |             aesAlg.Mode = CipherMode.ECB; | 
					
						
							|  |  |  |             aesAlg.Padding = PaddingMode.PKCS7; | 
					
						
							|  |  |  |             var encryptor = aesAlg.CreateEncryptor(); | 
					
						
							|  |  |  |             var encryptedBytes = encryptor.TransformFinalBlock(contentBytes, 0, contentBytes.Length); | 
					
						
							|  |  |  |             return BitConverter.ToString(encryptedBytes).Replace("-", "").ToLower(); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         // Aes 解密 | 
					
						
							|  |  |  |         public static string AesDecrypt(string packageName, string encrypted) | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             string key = GetKey(packageName); | 
					
						
							|  |  |  |             var keyBytes = Encoding.UTF8.GetBytes(key); | 
					
						
							|  |  |  |             var encryptedBytes = new byte[encrypted.Length / 2]; | 
					
						
							|  |  |  |             for (var i = 0; i < encryptedBytes.Length; i++) | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 encryptedBytes[i] = Convert.ToByte(encrypted.Substring(i * 2, 2), 16); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |             // 使用传统的MD5创建方式 | 
					
						
							|  |  |  |             byte[] keyHash; | 
					
						
							|  |  |  |             using (var md5 = MD5.Create()) | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 keyHash = md5.ComputeHash(keyBytes); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |             using var aesAlg = Aes.Create(); | 
					
						
							|  |  |  |             aesAlg.Key = keyHash; | 
					
						
							|  |  |  |             aesAlg.Mode = CipherMode.ECB; | 
					
						
							|  |  |  |             aesAlg.Padding = PaddingMode.PKCS7; | 
					
						
							|  |  |  |             var decryptor = aesAlg.CreateDecryptor(); | 
					
						
							|  |  |  |             var decryptedBytes = decryptor.TransformFinalBlock(encryptedBytes, 0, encryptedBytes.Length); | 
					
						
							|  |  |  |             return Encoding.UTF8.GetString(decryptedBytes); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 |