代码之家  ›  专栏  ›  技术社区  ›  Razor

正在加密用于部署的配置文件

  •  0
  • Razor  · 技术社区  · 15 年前

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

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

    我想要的是让我们的管理员将已经加密的配置文件部署到许多机器上,并在需要时让每台机器对其进行解密。

    我也不想将密码硬编码到程序集中,所以我不确定如何处理这个问题。

    2 回复  |  直到 15 年前
        1
  •  8
  •   Steven A. Lowe    15 年前

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

    • 你有一个计划
    • 会得到一个加密文件
    • 你想解密文件
    • 无需对钥匙进行硬编码

    显而易见的解决方案是在需要时向可信的第三方请求密钥

        2
  •  2
  •   Paul Robinson    15 年前

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

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

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

    现在,考虑到这个重新处理标志(特别是如果整个密钥是十六进制的),需要有人遵循逻辑来确定代码执行的16个不同函数中的哪一个,然后找出解密方法。它不会阻止所有人,但它可能会做一个相当好的工作,开车离开所有,除了最坚决。