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 WZ
 | |
| {
 | |
|     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);
 | |
|         }
 | |
|     }
 | |
| }
 | |
| 
 |