using System;
using System.Collections.Generic;
using System.Text;
public class Obfuscation
{
public static List<int> ObfuscateString(string input, List<int> key1, List<int> key2)
{
byte[] inputBytes = Encoding.UTF8.GetBytes(input);
List<int> result = new List<int>();
int prevChar = 0;
for (int i = 0; i < inputBytes.Length; i++)
{
int character = inputBytes[i];
int key1Index = (prevChar + i) % key1.Count;
int key2Index = (key1[key1Index] + prevChar) % key2.Count;
for (int j = 0; j < 10; j++)
{
character = ((character + key1[key1Index] + prevChar) ^ key2[key2Index]) & 0xFF;
character = ((character << 3) | (character >> 5)) & 0xFF;
character = (character ^ key1[key1Index]) & 0xFF;
character = ((character - key2[key2Index]) & 0xFF) ^ 0xAB;
character = (character * 7) & 0xFF;
character = (character ^ (key1[key1Index] >> 2)) & 0xFF;
character = ((character + key2[key2Index] + prevChar) & 0xFF) ^ 0x7E;
character = ((character << 2) | (character >> 6)) & 0xFF;
character = (character ^ 0x55) & 0xFF;
character = ((character - key1[key1Index] + prevChar) * 3) & 0xFF;
}
result.Add(character);
prevChar = character;
}
return result;
}
public static string DeobfuscateString(List<int> obfuscatedData, List<int> key1, List<int> key2)
{
return "test";
}
public static void Main()
{
string input = "Hello, World!";
List<int> key1 = new List<int> { 1, 2, 3, 4, 5 };
List<int> key2 = new List<int> { 6, 7, 8, 9, 10 };
// Обфускация строки
List<int> obfuscated = ObfuscateString(input, key1, key2);
Console.WriteLine("Obfuscated:");
Console.WriteLine(string.Join(", ", obfuscated));
// Деобфускация строки
string deobfuscated = DeobfuscateString(obfuscated, key1, key2);
Console.WriteLine("Deobfuscated:");
Console.WriteLine(deobfuscated);
// Проверка на корректность деобфускации
Console.WriteLine("Test: " + (input == deobfuscated ? "success!" : "fail"));
}
}