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