2009-02-19 88 views
0

我有一个从app.config中读取的Windows服务。加密配置文件进行部署

我想要加密一些设置,但是,我不想使用.NET中提供的ProtectedConfigurationProvider类,因为它们基于使用DPAPI正在运行的计算机加密文件。

我想要的东西对我们的管理员部署已经加密到多台机器的配置文件,并在需要的时候每台机器对其进行解密的方式。

我不想硬编码密码到组件要么所以我不知道我怎么能去这件事。

+5

谁是文斯,他为什么问这个问题呢? http://stackoverflow.com/questions/559995/encrypting-config-files-for-deployment-net – spender 2010-10-03 01:47:05

回答

8

减少的问题,以最简单的形式:

  • 你有一个程序
  • 将给予加密文件
  • ,并要解密文件
  • 没有硬编码键

显而易见的解决办法是在需要时向可信第三方索要密钥

+1

受信任的第三方不一定是用户。可能是 – 2009-02-19 05:08:47

2

一种可能的方式做到这一点应该包含在文件开头的解密密钥,并且密钥已经以某种方式,你可以从按键确定了后处理。一种可能性就是选择16个不同的东西,例如0表示将前两个字节旋转到结尾; 1将最后两个字节旋转到前面; 2将每个字节加1;等等14个附加功能。现在将该值添加到密钥前面作为“重新处理标志”。然后

关键的第一个字节将是一个分支表的16个不同的程序之一,说什么与关键做。请注意,重新处理标志不必是第一个字节,只要记得在处理密钥时丢弃该字节,它就可以是密钥中的任何字节。

然后你根据什么解密算法,你会使用过程中的关键。

现在,鉴于此重新处理标志 - 特别是如果整个键是十六进制 - 需要有人跟踪,以确定你的代码执行的16种不同的功能,这,然后找出解密方法的逻辑。它不会阻止每个人,但它可能会做一个相当不错的工作,但最坚决的一切都会驱散。

+1

这种认证服务器,它仍然在技术上对关键字进行硬编码,只是在配置文件中被模糊处理,而不是在代码中存在 - 尽管如此,仍然需要+1! – 2009-02-19 02:54:26