【发布时间】:2018-12-14 21:36:42
【问题描述】:
我知道如何使用 C# 发送电子邮件。为此,我需要知道用户的用户名和密码。
我有关于如何使用哈希+盐存储密码的基础知识,以存储密码的哈希,因此每次应用程序获取密码时,都进行哈希并与生成的哈希值进行比较.这对登录有好处,因为用户输入密码才能使用应用程序。
但是,对于发送电子邮件,我想避免用户必须输入电子邮件的密码,因此登录解决方案不适用于这种情况。我想以某种方式将密码存储在数据库中,并且应用程序可以获取它。问题是,如果我存储散列密码,应用程序无法获取密码,因为散列是单向加密。
所以我想知道我可以使用哪些替代方法将密码以安全的方式存储在数据库中,并且应用程序可以获取它来发送电子邮件。
谢谢。
【问题讨论】:
-
您如何发送电子邮件?您是否需要该用户的密码才能以该用户身份登录远程 SMTP 服务器?
-
在数据库中以可检索的方式存储密码永远不会“保存”。我知道的最省钱的方法是使用 .NET 内部加密并使用对称加密。为此,请查看
RijndaelManaged和CryptoStream内部的System.Security.Cryptography -
这可以通过 oauth 以某种方式完成吗?
标签: c# sql-server passwords securestring