如何使用dotfuscator混淆const变量值



这是我的代码:

namespace Password.Lib
{
public class PassRepo: IPassRepo
{
const string mEntropy= "djbiudv-dsvjkbdjs-svdjkbv";
const string logLevel = "logLevelKey";
private string currentLevel;
public PassRepo()
{
int answer = OldPasswordRepo();
}
}
}

对于上面的dll,我在dotfuscator配置文件中设置了以下选项:

<option>stripoa</option>
<option>library</option>
<option>transformxaml</option>
<controlflow level="high" />

与此同时,重命名规则也被启用:

<referencerulelist>
<referencerule rulekey="{6655B10A-FD58-462d-8D4F-5B1316DFF0FF}" />
<referencerule rulekey="{7D9C8B02-2383-420f-8740-A9760394C2C1}" />
<referencerule rulekey="{229FD6F8-5BCC-427b-8F72-A7A413ECDF1A}" />
<referencerule rulekey="{2B7E7C8C-A39A-4db8-9DFC-6AFD38509061}" />
<referencerule rulekey="{494EA3BA-B947-44B5-BEE8-A11CC85AAF9B}" />
<referencerule rulekey="{89769974-93E9-4e71-8D92-BE70E855ACFC}" />
<referencerule rulekey="{4D81E604-A545-4631-8B6D-C3735F793F80}" />
<referencerule rulekey="{62bd3899-7d53-4336-8ca2-4e5dbae187d5}" />
</referencerulelist>
<removal>
<option>disable</option>
<removalreport overwrite="true">
<file dir="" name="Removal.xml" />
</removalreport>
<referencerulelist />
</removal>

当我使用dotfuscator UI构建代码,然后尝试反编译它时,我得到以下输出:

public class PassRepo: IPassRepo
{
private const string a = "djbiudv-dsvjkbdjs-svdjkbv";
private const string b = "logLevelKey";
private string c;

public PassRepo()
{
int l = OldPasswordRepo;
}
}

我需要混淆这些变量的值:mEntropy=">djbiudv-dsvjkbdjs-svdjkbv";和logLevel =,logLevelKey"。我怎样才能做到呢?

我试图禁用库模式,但在这种情况下,我的应用程序不能正常工作。UI根本不显示

有人能帮帮我吗?

const变量的值在编译时可用(即使在编译使用您的库的客户端库时也是如此)。事实上,任何const string的使用都会将字符串值复制到use-site。

这意味着字符串值必须以c#编译器可以理解的形式存储,因此不能加密。

如果需要保护字符串值,请切换到static readonly string