当我使用 eaz 和 newtonsoft json 时,它会加密我所有的 json 数据。有没有办法在 c# 中解密它或禁用数据加密?
我使用虚拟化和密码加密
当我使用 eaz 和 newtonsoft json 时,它会加密我所有的 json 数据。有没有办法在 c# 中解密它或禁用数据加密?
我使用虚拟化和密码加密
我在 2020 年与 Eazfuscator 进行了交谈,并且能够使用构造函数很好地集成它。
但是,您必须做的一件事是使用 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 始终假定数据已被操作并验证数据)时,您可以通过在数据中序列化的校验和字段来做到这一点,并且如果在 [jsonconstructor] 带注释的构造函数中使用 json,请检查。