AESCrypto.cs 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. using System;
  2. using System.Diagnostics;
  3. using System.IO;
  4. using System.Security.Cryptography;
  5. using System.Text;
  6. using UnityEngine;
  7. public class AESCrypto
  8. {
  9. private static readonly string AES_KEY = "7b5a4d3e2f1c0b0a"; // 确保使用与 Java 中生成的密钥相同
  10. public static string Decrypt(string encryptedData)
  11. {
  12. byte[] combinedData = Convert.FromBase64String(encryptedData);
  13. byte[] iv = new byte[16]; // 128 位 AES 的 IV 长度
  14. byte[] cipherText = new byte[combinedData.Length - iv.Length];
  15. Array.Copy(combinedData, 0, iv, 0, iv.Length);
  16. Array.Copy(combinedData, iv.Length, cipherText, 0, cipherText.Length);
  17. using (Aes aes = Aes.Create())
  18. {
  19. aes.Key = Encoding.UTF8.GetBytes(AES_KEY);
  20. aes.IV = iv;
  21. using (ICryptoTransform decryptor = aes.CreateDecryptor(aes.Key, aes.IV))
  22. using (MemoryStream ms = new MemoryStream(cipherText))
  23. using (CryptoStream cs = new CryptoStream(ms, decryptor, CryptoStreamMode.Read))
  24. using (StreamReader sr = new StreamReader(cs))
  25. {
  26. return sr.ReadToEnd();
  27. }
  28. }
  29. }
  30. // 测试
  31. public static void Test()
  32. {
  33. string encryptedData = "lVqQnIvDq9OhO74MsEOLFCHwBa6n/sS2Voa6iWbbPunKJ4FVsLgU7GZCfEuvOVALTLW0k7/UyNjNQlOJ0B6QUZb+0IrJRK7g4CLEoPuhWTmeberYVfMNRFecesxt2IsttSWecqLtngVGJ5nOmTRTeJnum11GON8PAZTz85BLlLjOvOPpzw6oIcBrsqu6qu8UMW9BrjOuH4elg6zInmZxOlLOIMgTYwcc0lkWEb7RvEUrCGKC4DYnUI1s86iXKTvLrxIjB3WAcoyRcllAc7Tl4JWezUJ4kW3dPNaFSKb2JUncYPR+RR9iv3vUeLffQWPWSVesSjD/PsUXU1SQrjfSruO5sbRo33+plerlUv5Gm5iHrgXTrWILoMHomOz1Hv3HGkEODgIakOCP6SflVznfPxSFXa9tSLwQcV/2+p4SLBc8x9dNEsdh0TwHrwQ2eeNLBaHkoXGNg7Tg3Qh0WRrtiMhwEvydp7VNZBFKsdeQjRRlzsXZsgl/dP706//tw0Ze4KHGD6cf/RpZK5nWgWpjEjZfQseA4UJUU12hQq6iD8LE5ZL/swiVxUJf9fsRk9xs"; // 从 Java 获取的加密数据
  34. string decryptedData = Decrypt(encryptedData);
  35. UnityEngine.Debug.Log("Decrypted: " + decryptedData);
  36. }
  37. }