1

我有一个从 app.config 读取的 Windows 服务。

我希望对某些设置进行加密,但是,我不想使用 .NET 中提供的 ProtectedConfigurationProvider 类,因为它们基于使用 DPAPI 运行的机器来加密文件。

我想要的是一种让我们的管理员将已经加密的配置文件部署到多台机器并让每台机器在需要时解密它们的方法。

我也不想将密码硬编码到程序集中,所以我不确定我该怎么做。

4

2 回答 2

9

将问题简化为最简单的形式:

  • 你有一个程序
  • 将获得一个加密文件
  • 你想解密文件
  • 无需对密钥进行硬编码

显而易见的解决方案是在需要时向受信任的第三方索取密钥

于 2009-02-19T02:37:11.447 回答
2

一种可能的方法是在文件的开头包含解密密钥,并且该密钥已以某种方式进行了重新处理,您可以从该密钥中确定该方式。一种可能性是选择,比如说十六个不同的东西,比如,0 表示将前两个字节旋转到末尾;1 将最后两个字节旋转到前面;2 每个字节加 1;等等 14 个附加功能。现在将此值添加到键前面作为“重新处理标志”。

然后,密钥的第一个字节将成为 16 个不同例程之一的分支表,以说明如何处理密钥。请注意,重新处理标志不必是第一个字节,它可以是密钥中的任何字节,只要您记得在处理密钥时丢弃该字节即可。

然后根据您将使用的任何解密算法处理密钥。

现在,考虑到这个重新处理标志——特别是如果整个密钥是十六进制的——需要有人按照逻辑来确定你的代码执行了 16 个不同函数中的哪一个,然后找出解密方法。它不会阻止每个人,但它可能会做得很好,除了最坚定的人之外,它会驱走所有人。

于 2009-02-19T02:43:14.070 回答