.net 加密用于部署的配置文件

.net 加密用于部署的配置文件,.net,encryption,app-config,.net,Encryption,App Config,我有一个从app.config读取的windows服务 我希望对一些设置进行加密,但是,我不想使用.NET中提供的ProtectedConfigurationProvider类,因为它们基于使用DPAPI运行的计算机对文件进行加密 我想要的是让我们的管理员能够将已经加密的配置文件部署到许多机器上,并在需要时让每台机器对其进行解密 我也不想将密码硬编码到程序集中,因此我不确定如何执行此操作。将问题简化为最简单的形式: 你有计划吗 这将得到一个加密文件 你想解密这个文件吗 没有硬编码的关键 显而易见

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

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

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


我也不想将密码硬编码到程序集中,因此我不确定如何执行此操作。

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

你有计划吗 这将得到一个加密文件 你想解密这个文件吗 没有硬编码的关键
显而易见的解决方案是在需要时向可信的第三方索要密钥

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

你有计划吗 这将得到一个加密文件 你想解密这个文件吗 没有硬编码的关键
显而易见的解决方案是在需要时从受信任的第三方请求密钥,一种可能的方法是在文件开头包含解密密钥,并且密钥已以某种方式重新处理,您可以从密钥中确定。一种可能是选择,比如说,十六个不同的东西,0是,比如说,将前两个字节旋转到末尾;1将最后两个字节向前旋转;2为每个字节加1;等14个附加功能。现在,在键前面添加此值作为重新处理标志

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

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


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

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

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

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


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

这在技术上仍然是硬编码的关键,只是在配置文件中混淆了,而不是现存的代码中-+1,尽管如此,对于深思熟虑的答案!这在技术上仍然是硬编码的关键,只是混淆在配置文件中,而不是现存的代码-+1的深思熟虑的答案虽然!受信任的第三方不一定是用户。sortsa trusted third part的身份验证服务器可能不一定是用户。可能是索茨的认证服务器谁是文斯?他为什么问这个问题?文斯是谁?他为什么问同样的问题?