70 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			C#
		
	
	
	
		
		
			
		
	
	
			70 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			C#
		
	
	
	
|  | using System; | ||
|  | using System.Collections; | ||
|  | using System.Collections.Generic; | ||
|  | using System.Security.Cryptography; | ||
|  | using System.Text; | ||
|  | using UnityEngine; | ||
|  | 
 | ||
|  | namespace SDK.Utils | ||
|  | { | ||
|  |     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); | ||
|  |         } | ||
|  |     } | ||
|  | } | ||
|  | 
 |