c# - 存储 Windows 密码

标签 c# .net windows security passwords

我正在编写(使用 C# 和 .NET 3.5)一个管理应用程序,它将轮询多个 Windows 系统以获取各种数据位。在许多情况下,它会使用 WMI,但在某些情况下,它可能需要读取远程注册表或在轮询系统上远程执行某些命令或脚本。这种轮询将以重复的时间间隔发生——通常是每晚,但可以配置为更(或更不)频繁地发生。因此,投票可能每 10 分钟一次或每月一次。它需要以自动化方式发生,无需任何人为干预。

这些功能将需要对轮询系统的管理员级别访问权限。现在,我希望在大多数用例中,会有一个域,并且轮询应用程序可以作为具有域管理员(或同等)权限的服务运行,这意味着我不必担心存储密码 - 管理员设置该应用程序将通过标准 Windows 机制定义服务的用户名/密码。

但总有一些害群之马。该程序可能在非域环境中运行,或者在某些轮询系统不是域成员的情况下运行。在这些情况下,我们必须定义用户名和密码,安全地存储它们,然后在我们轮询该系统时调用该用户/密码对。所以请记住 - 在这种情况下,正在编写的程序向身份验证系统发送密码的用户

我不确定我是否需要使用可逆散列,然后在使用时将其解密为明文,或者是否有某种 Windows 机制允许我存储然后仅重用散列。显然第二种机制更可取;我希望我的程序永远不知道密码的明文值,或者在尽可能短的时间内知道它。

我需要有关智能和安全方法的建议来完成此任务。

感谢您的关注!

最佳答案

关于c# - 存储 Windows 密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47262/

相关文章:

c# - 解决方案结构/最佳实践

asp.net - 如何在回发时刷新 ReportViewer 报告

c# - 如何防止 XmlSerializer 杀死字符串中的换行符?

android - 检测USB设备是否为安卓手机

c# - 为什么在不涉及逻辑时使用属性?

c# - 测试通用接口(interface)时出现奇怪的接口(interface)/TContext 错误

c# - 如何有效地测试 Action 是否装饰有属性(AuthorizeAttribute)?

c++ - 在 Visual Studio 中调试由非托管 C++ 二进制文件加载的 .NET COM DLL

php-cgi.exe 在恰好 500 次点击后退出

Python:如何测试我的包是否在 Linux、Mac 和 Windows 上运行