C#加密 - 如何保护密码

时间:2014-07-01 13:24:02

标签: c# security encryption

我正在创建一个应用程序,目的是接收加密的字符串,对其进行解密并将明文字符串作为参数传递给PowerShell脚本。

可执行文件必须是自包含的,不能连接到SQL DB或类似的东西。密码总是相同的,这意味着密码/盐也不能真正随机。

我知道对密码/盐进行硬编码并不是一个好主意,但我正在努力解决如何在一个独立的可执行文件中以安全的方式存储密码/盐的问题。

现在我正在做的不是将静态字符串作为密码/哈希,而是根据可执行文件本身的修改日期创建密码和盐(还有一些事情要做)。如果可执行文件发生了变化,我将不得不重新创建密码,因为前一个密码不能被解码,但至少我并没有真正硬编码密码和/或盐。

不过,我不确定这是多么安全,我相信必须有更好的方法。

有什么建议吗?

修改

唯一可以使用它的地方是在SCCM内运行的任务序列内部,这意味着在任务序列运行期间用户根本无法与计算机交互(假设调试模式)没有启用,否则还有更糟糕的事情需要担心)。

所以我可能会以明文形式将它传递给脚本,因为没有人能够读取它,因为它们无法与PC交互,但是SCCM会自动将它输出到日志中,这显然我不会想。我可以在脚本上写它,避免在日志中使用它,但如果有人掌握了脚本,记住它是一个脚本而不是编译代码,他们就知道密码了。

请记住,密码/ salt实际上并不是硬编码字符串,它们是在运行时生成的,因此使用反汇编程序将无法显示它们。

1 个答案:

答案 0 :(得分:1)

本文可以帮助您确定如何设计密码存储

http://flagdefenders.blogspot.in/2012/12/how-to-save-password-securely.html