c# - 禁用 eazfuscator json 加密
问题描述
当我使用 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,请检查。
推荐阅读
- perfino - Perfino Alert 是否会显示问题发生的确切位置
- java - 使用 Azure 在我的 Web 应用程序上启用 SSO
- jquery - 关于四连行游戏中的node js逻辑
- c - C - 为什么我的数组被覆盖?
- c# - 如何更改datagridview列分隔符颜色c#winforms
- html - 如何输入正确的路径?
- java - 如何执行一项任务并每分钟返回一个数据
- android - Firebase-ML Kit 库无法检测三星 J5 设备中的条形码
- elixir - 有没有办法从凤凰通道来回调用控制器方法
- javascript - 是否可以使用 jquery: on 方法在文档中动态加载的 iframe 内容上触发事件