我的.NET WinForms应用程序连接到ftp服务器并下载文件。为此,需要连接密码。密码应存储在配置文件中,但应加密。我发现的唯一解决方案包括保护整个配置部分(对于我来说没有用,因为在appSettings部分,其中密码是有其他需要手动更改的数据)或使用DPAPI(和它一样)也不起作用,因为在我的计算机上加密的密码无法在其他人上解密,这是必要的)。还有其他技术吗?
答案 0 :(得分:3)
您可以加密.config文件的特定部分 - 例如<connectionstrings>
部分。这可以保存FTP密码(虽然它不是真正的连接字符串),您可以保留<appSettings>
部分未加密。
更新:如果您也无法使用<connectionstrings>
,则可以创建自己的自定义部分并对其进行加密。
大多数资源都告诉您使用ASP.NET aspnet_regiis
工具。 Here是一篇关于加密C#Windows应用程序部分的文章,其中使用ASP.NET不是一种选择。
进一步更新:在评论中,您说
这种安全就足够了 - 它是一个 简单的内部公司应用程序和那里 不需要非常高的安全性 不想让密码打下来 在配置文件
中作为纯文本
那么也许this solution对你有用。
答案 1 :(得分:2)
您可以使用应用程序内的对称密码(即AES)手动加密和解密,并将加密密码存储在配置文件中。
当然,问题在于您必须存储加密和解密应用程序内密码的对称密钥,因此任何了解crypto和.net的人都能够反映和反向设计二进制文件相当容易 - 并获取密钥,因此获取FTP密码。
您可能会混淆二进制文件以使其更加困难。
当然,无论如何,FTP用户名和密码都是以明文形式发送的(除非您使用的是ftps :),因此任何“聆听”您应用的人都会很快找出用户名和密码。
我想这取决于您在应用程序中想要这个用户名和密码的安全性如何?这种解决方案可以防止那些有窥探眼睛的人抓住它,但不会阻止那些被确定的人。