Отключить eazfuscator JSON-шифрование
Когда я использую eaz и newtonsoft json, он шифрует все мои данные json. Есть ли способ расшифровать его в C# или отключить шифрование данных?
Я использую виртуализацию и шифрование с паролем
1 ответ
Я разговаривал с Eazfuscator еще в 2020 году и смог хорошо интегрировать это с помощью конструктора.
Однако одна вещь, которую вы ДОЛЖНЫ сделать, это использовать атрибут имени свойства json, поскольку запутанные свойства будут переименованы, вы не можете быть уверены, какое имя они получат, а также не можете гарантировать, что «следующая» компиляция/обфускация сгенерирует то же имя.
В любом случае достаточно легко исправить метод 1, используя имена из json для сопоставления через конструктор
private class MyProprietaryData
{
internal MyProprietaryData(string a1, int a2)
{
AccountNumber=a1;
Code=a2;
}
[JsonProperty("a1")]
public string AccountNumber{get;}
[JsonProperty("a2")]
public int Code{get;}
}
метод 2 использует json для заполнения полей, а не свойств
private class MyProprietaryData
{
[JsonProperty("a1")]
string _accountNumber;
[JsonProperty("a2")]
int _code;
internal MyProprietaryData(string accountNumber, int code)
{
AccountNumber=accountNumber;
Code=code;
}
[JsonIgnore]
public string AccountNumber =>_accountNumber;
[JsonIgnore]
public int Code => _code;
}
Как и все комбинации, которые дает вам .net, единственное, что вы должны помнить, это то, что переименование полей повлияет на сгенерированные во время выполнения преобразователи, такие как сериализация json. Это работает как с новым .net json, так и с newtonsoft json.
Вы не спрашивали об этом, но это бесплатный совет: при исключении внешних данных, таких как json, xml, gRPC, всегда предполагайте, что данные манипулируются и проверяют данные, вы можете сделать это, имея поле контрольной суммы, которое вы сериализуете в данных и который вы проверяете, в случае json в аннотированном конструкторе [jsonconstructor].