我必须通过 C# 中的代码发送电子邮件,smtp 服务器需要身份验证,所以我需要创建一个新NetworkCredential
实例。
现在的问题是我想使用像 MD5 这样的加密方法将密码存储在数据库中,但是NetworkCredential
构造函数接受输入一个明确的密码,我如何NetworkCredential
使用 MD5 加密密码创建实例?
对不起我的英语不好
我必须通过 C# 中的代码发送电子邮件,smtp 服务器需要身份验证,所以我需要创建一个新NetworkCredential
实例。
现在的问题是我想使用像 MD5 这样的加密方法将密码存储在数据库中,但是NetworkCredential
构造函数接受输入一个明确的密码,我如何NetworkCredential
使用 MD5 加密密码创建实例?
对不起我的英语不好
储存秘密的最好方法是根本不拥有它。对此进行了广泛的讨论,例如参见Best way to store password in database。
如果您必须以可检索的方式存储密码,一般方法是使用对称算法(例如 AES)对其进行加密。要使用对称算法,您需要有一个密钥,现在问题变成了:如何安全地存储私钥?人们为保护密钥所做的事情:
但这一切只会提高一个标准,但不会保护来自确定的攻击者。
我知道一些商业公司提供付费解决方案,以加密方式分散程序代码中的密钥,因此无法检索它,例如通过附加调试器并拦截对密钥所在位置的调用在明确。搜索“metaforic”以获取此类商业解决方案的示例。