我有一个从app.config读取的Windows服务。
我想要加密一些设置,但是,我不想使用.NET中提供的ProtectedConfigurationProvider类,因为它们根据使用DPAPI运行的机器加密文件。
我想要的是管理员将已经加密的配置文件部署到许多计算机并让每台计算机在需要时对其进行解密的方法。
我不想将密码硬编码到程序集中,因此我不确定如何解决这个问题。
答案 0 :(得分:8)
将问题简化为最简单的形式:
显而易见的解决方案是在需要时从受信任的第三方请求密钥
答案 1 :(得分:2)
执行此操作的一种可能方法是在文件开头包含解密密钥,并且已经以某种方式重新处理密钥,您可以从密钥中确定密钥。一种可能性就是选择,比如说十六种不同的东西,比如说,将前两个字节旋转到最后; 1将最后两个字节旋转到前面; 2每个字节加1;等14个附加功能。现在将此值添加到键前面作为“重新处理标志”。
然后,密钥的第一个字节将成为16个不同例程之一的分支表,以说明如何处理密钥。请注意,重新处理标志不必是第一个字节,只要您记得在处理密钥时丢弃该字节,它就可以是密钥中的任何字节。
然后根据您将使用的任何解密算法处理密钥。
现在,给定此重新处理标志 - 特别是如果整个密钥是十六进制的 - 将需要有人按照逻辑来确定您的代码执行的16个不同函数中的哪一个,然后找出解密方法。它并不会阻止所有人,但除了最坚定的人之外,它可能会做得相当不错。