首页 > 解决方案 > 禁用 eazfuscator json 加密

问题描述

当我使用 eaz 和 newtonsoft json 时,它会加密我所有的 json 数据。有没有办法在 c# 中解密它或禁用数据加密?

我使用虚拟化和密码加密

标签: c#jsoneazfuscator

解决方案


我在 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,请检查。


推荐阅读