Files
2025-02-10 18:17:56 -06:00

73 lines
2.1 KiB
C#

namespace PowerCrypt.Obfuscator.Methods.StaticNumberObfuscation
{
public class NumberOBF
{
public static string ObfuscateNumber(string number)
{
if (!IsDecimalNumber(number))
{
return number;
}
return AddOrSubtractRandomEQ(number);
}
private static bool IsDecimalNumber(string number)
{
return int.TryParse(number, out _);
}
private static string AddOrSubtractRandomEQ(string numberToObf)
{
var random = new Random();
var number1 = random.Next(1, 10000);
var signs = new[] { "+", "-" };
var sign1 = signs[random.Next(0, 2)];
var oppositeSign1 = sign1 == "+" ? "-" : "+";
var finalNumber = $"{numberToObf} {sign1} {number1}";
var outFinal = EvaluateExpression(finalNumber);
//1/4 chance to include a third number
if (random.Next(0, 4) == 0)
{
var number2 = random.Next(1, 10000);
var sign2 = signs[random.Next(0, 2)];
var oppositeSign2 = sign2 == "+" ? "-" : "+";
finalNumber = $"{outFinal} {sign2} {number2}";
outFinal = EvaluateExpression(finalNumber);
var newProblem = $"{outFinal}{oppositeSign2}{number2}{oppositeSign1}{number1}";
return $"({newProblem})";
}
else
{
var newProblem = $"{outFinal}{oppositeSign1}{number1}";
return $"({newProblem})";
}
}
private static int EvaluateExpression(string expression)
{
var result = 0;
var data = expression.Split(' ');
result = int.Parse(data[0]);
var sign = data[1];
var number = int.Parse(data[2]);
if (sign == "+")
{
result += number;
}
else if (sign == "-")
{
result -= number;
}
return result;
}
}
}