【加密】修改加密内容
parent
29105ac8c9
commit
074492f84a
|
|
@ -1 +1 @@
|
|||
Subproject commit 6e35a6e96a81570867c79b0fbbc688a4964121a5
|
||||
Subproject commit d553da59e4de2d89e91d1fa02ef32c016acd888d
|
||||
Binary file not shown.
|
|
@ -1,5 +1,5 @@
|
|||
fileFormatVersion: 2
|
||||
guid: ab97289971dbdd14d87c3f7692657b96
|
||||
guid: 0dfdf4578361b8d4b88f11d189be12ec
|
||||
TextScriptImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
|
@ -1,19 +0,0 @@
|
|||
{
|
||||
"workSpace":"Dev",
|
||||
"accessKeyId":"LTAI5tSoxnie6B5hot9PJVHC",
|
||||
"accessKeySecret":"UF4mUjfxkE457WyfhKqSVOOn5uOB0H",
|
||||
"phxhBiAccessKeyId":"",
|
||||
"phxhBiScretKey":"",
|
||||
"phxhBiUrl":"",
|
||||
"bucketName":"nld-dev-k8f3h2qr9plmn3b3",
|
||||
"configOriginalUrl":"http://k8f3h2qr9plmn3b3.kedrgame.com",
|
||||
"httpAccessKey":"0SoE48O9sayjkG8J",
|
||||
"httpKey":"uUi_UI1oMKWo0VOSN1zme17Z70-FlAv3Lcx2mNhoYe4=",
|
||||
"version":"0.1.0",
|
||||
"pathRoot":"",
|
||||
"localFullVersion":"",
|
||||
"isDev":true,
|
||||
"isOversea":false,
|
||||
"buildTicks":638968457784935889,
|
||||
"buildCode":""
|
||||
}
|
||||
|
|
@ -115,6 +115,177 @@ public class TestCode: Editor
|
|||
var isSame = loadStr.Equals(decodeStr);
|
||||
Debug.LogError("对比结果:" + isSame);
|
||||
}
|
||||
|
||||
[MenuItem("Test/测试LocalInfoEncrypt加密解密")]
|
||||
public static void TestLocalInfoEncrypt()
|
||||
{
|
||||
Debug.Log("========== 开始测试 LocalInfoEncrypt 加密解密功能 ==========");
|
||||
|
||||
// 测试1: 基础字节数组加密解密
|
||||
Debug.Log("\n【测试1】基础字节数组加密解密:");
|
||||
var testData1 = "Hello World! 这是测试数据 123456";
|
||||
var originalBytes1 = Encoding.UTF8.GetBytes(testData1);
|
||||
Debug.Log($"原始数据: {testData1}");
|
||||
Debug.Log($"原始字节长度: {originalBytes1.Length}");
|
||||
|
||||
var encryptedBytes1 = PhxhSDK.AOT.VersionUpdate.LocalInfoEncrypt.Encrypt(originalBytes1);
|
||||
Debug.Log($"加密后字节长度: {encryptedBytes1.Length}");
|
||||
|
||||
var decryptedBytes1 = PhxhSDK.AOT.VersionUpdate.LocalInfoEncrypt.Decrypt(encryptedBytes1, out bool isEncrypted1);
|
||||
var decryptedData1 = Encoding.UTF8.GetString(decryptedBytes1);
|
||||
Debug.Log($"解密后数据: {decryptedData1}");
|
||||
Debug.Log($"是否加密: {isEncrypted1}");
|
||||
Debug.Log($"测试1结果: {(testData1 == decryptedData1 ? "✓ 成功" : "✗ 失败")}");
|
||||
|
||||
// 测试2: JSON数据加密解密
|
||||
Debug.Log("\n【测试2】JSON数据加密解密:");
|
||||
var testJson = "{\"name\":\"测试\",\"value\":123,\"flag\":true}";
|
||||
var originalBytes2 = Encoding.UTF8.GetBytes(testJson);
|
||||
Debug.Log($"原始JSON: {testJson}");
|
||||
|
||||
var encryptedBytes2 = PhxhSDK.AOT.VersionUpdate.LocalInfoEncrypt.Encrypt(originalBytes2);
|
||||
var decryptedBytes2 = PhxhSDK.AOT.VersionUpdate.LocalInfoEncrypt.Decrypt(encryptedBytes2, out bool isEncrypted2);
|
||||
var decryptedJson = Encoding.UTF8.GetString(decryptedBytes2);
|
||||
Debug.Log($"解密后JSON: {decryptedJson}");
|
||||
Debug.Log($"是否有效JSON: {PhxhSDK.AOT.VersionUpdate.LocalInfoEncrypt.IsValidJson(decryptedBytes2)}");
|
||||
Debug.Log($"测试2结果: {(testJson == decryptedJson ? "✓ 成功" : "✗ 失败")}");
|
||||
|
||||
// 测试3: Base64字符串加密解密
|
||||
Debug.Log("\n【测试3】Base64字符串加密解密:");
|
||||
var testString3 = "{\"test\":\"base64加密测试\",\"number\":999}";
|
||||
Debug.Log($"原始字符串: {testString3}");
|
||||
|
||||
var encryptedBase64 = PhxhSDK.AOT.VersionUpdate.LocalInfoEncrypt.EncryptToBase64(testString3);
|
||||
Debug.Log($"加密后Base64长度: {encryptedBase64.Length}");
|
||||
|
||||
var decryptedString3 = PhxhSDK.AOT.VersionUpdate.LocalInfoEncrypt.DecryptFromBase64(encryptedBase64);
|
||||
Debug.Log($"解密后字符串: {decryptedString3}");
|
||||
Debug.Log($"测试3结果: {(testString3 == decryptedString3 ? "✓ 成功" : "✗ 失败")}");
|
||||
|
||||
// 测试4: 明文数据兼容性测试
|
||||
Debug.Log("\n【测试4】明文数据兼容性测试:");
|
||||
var plainJson = "{\"plain\":\"明文数据\",\"encrypted\":false}";
|
||||
var plainBytes = Encoding.UTF8.GetBytes(plainJson);
|
||||
Debug.Log($"明文数据: {plainJson}");
|
||||
|
||||
var decryptedPlainBytes = PhxhSDK.AOT.VersionUpdate.LocalInfoEncrypt.Decrypt(plainBytes, out bool isEncrypted4);
|
||||
var decryptedPlainJson = Encoding.UTF8.GetString(decryptedPlainBytes);
|
||||
Debug.Log($"解密后数据: {decryptedPlainJson}");
|
||||
Debug.Log($"是否识别为加密: {isEncrypted4}");
|
||||
Debug.Log($"测试4结果: {(plainJson == decryptedPlainJson && !isEncrypted4 ? "✓ 成功" : "✗ 失败")}");
|
||||
|
||||
// 测试5: 大数据加密解密
|
||||
Debug.Log("\n【测试5】大数据加密解密:");
|
||||
var largeData = new StringBuilder();
|
||||
for (int i = 0; i < 1000; i++)
|
||||
{
|
||||
largeData.Append($"Line{i}:这是第{i}行测试数据,包含中英文和数字123456789;");
|
||||
}
|
||||
var largeDataStr = largeData.ToString();
|
||||
var originalBytes5 = Encoding.UTF8.GetBytes(largeDataStr);
|
||||
Debug.Log($"大数据原始长度: {originalBytes5.Length} 字节");
|
||||
|
||||
var encryptedBytes5 = PhxhSDK.AOT.VersionUpdate.LocalInfoEncrypt.Encrypt(originalBytes5);
|
||||
Debug.Log($"加密后长度: {encryptedBytes5.Length} 字节");
|
||||
|
||||
var decryptedBytes5 = PhxhSDK.AOT.VersionUpdate.LocalInfoEncrypt.Decrypt(encryptedBytes5, out bool isEncrypted5);
|
||||
var decryptedLargeData = Encoding.UTF8.GetString(decryptedBytes5);
|
||||
Debug.Log($"解密后长度: {decryptedBytes5.Length} 字节");
|
||||
Debug.Log($"测试5结果: {(largeDataStr == decryptedLargeData ? "✓ 成功" : "✗ 失败")}");
|
||||
|
||||
Debug.Log("\n========== LocalInfoEncrypt 测试完成 ==========");
|
||||
|
||||
EditorUtility.DisplayDialog("测试完成", "LocalInfoEncrypt加密解密测试已完成,请查看控制台日志", "确定");
|
||||
}
|
||||
|
||||
[MenuItem("Test/本地信息解密")]
|
||||
public static void FakeDecryptTest()
|
||||
{
|
||||
// 输入文件路径
|
||||
var inputPath = @"C:\Users\82158\Downloads\DeobfuscateStackTrace\net8.0\LocalInfo.bytes";
|
||||
// 输出文件路径
|
||||
var outputPath = @"C:\Users\82158\Downloads\DeobfuscateStackTrace\net8.0\Decrypt_LocalInfo.json";
|
||||
|
||||
try
|
||||
{
|
||||
// 检查输入文件是否存在
|
||||
if (!File.Exists(inputPath))
|
||||
{
|
||||
Debug.LogError($"输入文件不存在: {inputPath}");
|
||||
return;
|
||||
}
|
||||
|
||||
// 读取加密数据
|
||||
var encryptedBytes = File.ReadAllBytes(inputPath);
|
||||
Debug.Log($"读取加密数据,长度: {encryptedBytes.Length} 字节");
|
||||
|
||||
// 输出前20个字节用于调试
|
||||
var headerInfo = new StringBuilder();
|
||||
headerInfo.Append("文件头部字节 (前20字节): ");
|
||||
for (int i = 0; i < Math.Min(20, encryptedBytes.Length); i++)
|
||||
{
|
||||
headerInfo.Append($"{encryptedBytes[i]:X2} ");
|
||||
}
|
||||
Debug.Log(headerInfo.ToString());
|
||||
|
||||
// 检查是否有加密标识头 (NLDE = 0x4E, 0x4C, 0x44, 0x45)
|
||||
if (encryptedBytes.Length >= 4)
|
||||
{
|
||||
var hasHeader = encryptedBytes[0] == 0x4E && encryptedBytes[1] == 0x4C &&
|
||||
encryptedBytes[2] == 0x44 && encryptedBytes[3] == 0x45;
|
||||
Debug.Log($"是否包含加密标识头 (NLDE): {hasHeader}");
|
||||
if (hasHeader && encryptedBytes.Length >= 5)
|
||||
{
|
||||
Debug.Log($"加密版本号: {encryptedBytes[4]:X2}");
|
||||
}
|
||||
}
|
||||
|
||||
// 使用LocalInfoEncrypt.Decrypt进行解密
|
||||
var decryptedBytes = PhxhSDK.AOT.VersionUpdate.LocalInfoEncrypt.Decrypt(encryptedBytes, out bool isEncrypted);
|
||||
Debug.Log($"解密完成,数据长度: {decryptedBytes.Length} 字节,是否加密: {isEncrypted}");
|
||||
|
||||
// 输出解密后前100个字节
|
||||
var decryptedPreview = new StringBuilder();
|
||||
decryptedPreview.Append("解密后数据预览 (前100字节): ");
|
||||
for (int i = 0; i < Math.Min(100, decryptedBytes.Length); i++)
|
||||
{
|
||||
if (decryptedBytes[i] >= 32 && decryptedBytes[i] <= 126)
|
||||
decryptedPreview.Append((char)decryptedBytes[i]);
|
||||
else
|
||||
decryptedPreview.Append($"[{decryptedBytes[i]:X2}]");
|
||||
}
|
||||
Debug.Log(decryptedPreview.ToString());
|
||||
|
||||
// 转换为字符串(假设是JSON格式)
|
||||
var jsonString = Encoding.UTF8.GetString(decryptedBytes);
|
||||
Debug.Log($"解密后的JSON数据 (前500字符):\n{jsonString.Substring(0, Math.Min(500, jsonString.Length))}");
|
||||
|
||||
// 验证是否为有效JSON
|
||||
bool isValidJson = PhxhSDK.AOT.VersionUpdate.LocalInfoEncrypt.IsValidJson(decryptedBytes);
|
||||
Debug.Log($"是否为有效JSON: {isValidJson}");
|
||||
|
||||
// 保存到新文件中
|
||||
File.WriteAllBytes(outputPath + ".bytes", decryptedBytes); // 同时保存字节文件
|
||||
File.WriteAllText(outputPath, jsonString, Encoding.UTF8);
|
||||
Debug.Log($"解密后的数据已保存到: {outputPath}");
|
||||
Debug.Log($"同时保存字节文件到: {outputPath}.bytes");
|
||||
|
||||
// 成功提示
|
||||
if (isValidJson)
|
||||
{
|
||||
EditorUtility.DisplayDialog("解密成功", $"文件已成功解密并保存到:\n{outputPath}\n\n数据是有效的JSON格式", "确定");
|
||||
}
|
||||
else
|
||||
{
|
||||
EditorUtility.DisplayDialog("解密警告", $"文件已解密并保存到:\n{outputPath}\n\n但数据可能不是有效的JSON格式,请检查", "确定");
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Debug.LogError($"解密失败: {ex.Message}\n{ex.StackTrace}");
|
||||
EditorUtility.DisplayDialog("解密失败", $"解密过程中出现错误:\n{ex.Message}", "确定");
|
||||
}
|
||||
}
|
||||
|
||||
[MenuItem("Test/测试加密")]
|
||||
public static void Test()
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ PlayerSettings:
|
|||
useOnDemandResources: 0
|
||||
accelerometerFrequency: 60
|
||||
companyName: PHXH
|
||||
productName: ProjectA
|
||||
productName: "\u96EA\u677E"
|
||||
defaultCursor: {fileID: 0}
|
||||
cursorHotspot: {x: 0, y: 0}
|
||||
m_SplashScreenBackgroundColor: {r: 0, g: 0, b: 0, a: 0}
|
||||
|
|
|
|||
Loading…
Reference in New Issue