我正在编写(在C#中使用.NET 3.5)一个管理应用程序,它将为多个Windows系统轮询各种数据位.在许多情况下,它将使用WMI,但在某些情况下,它可能需要读取远程注册表或远程执行轮询系统上的某些命令或脚本.此轮询将以重复间隔发生 - 通常是每晚,但可以配置为频繁发生更多(或更少).因此,民意调查可能每10分钟发生一次,也可能每月发生一次.它需要以自动方式进行,无需任何人为干预.
这些功能需要管理员级别访问轮询系统.现在,我希望在大多数用例中,都会有一个域,并且轮询应用程序可以作为具有Domain Admin(或等效)权限的服务运行,这意味着我不必担心存储密码 - 管理员设置该应用程序将通过标准的Windows机制定义服务的用户名/密码.
但那里总有一些黑羊.该程序可以在非域环境中运行,或者在某些轮询系统不是域成员的情况下运行.在这些情况下,我们必须定义用户名和密码,安全地存储它们,然后在我们轮询该系统时调用此用户/传递对.所以请记住-在这种情况下,程序被写入为用户谁发送密码的认证系统.
我不确定是否需要使用可逆散列,然后在使用时将其解密为纯文本,或者如果有一些Windows机制允许我存储然后仅重用散列.显然第二种机制是可取的; 我希望我的程序要么永远不知道密码的明文值,要么在最短的时间内知道它.
我需要建议以智能和安全的方式来实现这一目标.
谢谢你的期待!
答案在这里:
如何在Winforms应用程序中存储密码?