【问题标题】:How to store the password of an email and use it to send an email?如何存储电子邮件的密码并使用它发送电子邮件?
【发布时间】:2018-12-14 21:36:42
【问题描述】:

我知道如何使用 C# 发送电子邮件。为此,我需要知道用户的用户名和密码。

我有关于如何使用哈希+盐存储密码的基础知识,以存储密码的哈希,因此每次应用程序获取密码时,都进行哈希并与生成的哈希值进行比较.这对登录有好处,因为用户输入密码才能使用应用程序。

但是,对于发送电子邮件,我想避免用户必须输入电子邮件的密码,因此登录解决方案不适用于这种情况。我想以某种方式将密码存储在数据库中,并且应用程序可以获取它。问题是,如果我存储散列密码,应用程序无法获取密码,因为散列是单向加密。

所以我想知道我可以使用哪些替代方法将密码以安全的方式存储在数据库中,并且应用程序可以获取它来发送电子邮件。

谢谢。

【问题讨论】:

  • 您如何发送电子邮件?您是否需要该用户的密码才能以该用户身份登录远程 SMTP 服务器?
  • 在数据库中以可检索的方式存储密码永远不会“保存”。我知道的最省钱的方法是使用 .NET 内部加密并使用对称加密。为此,请查看 RijndaelManaged 和 CryptoStream 内部的 System.Security.Cryptography
  • 这可以通过 oauth 以某种方式完成吗?

标签: c# sql-server passwords securestring


【解决方案1】:

理想情况下,服务使用默认或通用电子邮件 ID 发送电子邮件。但是,在您的情况下,如果许多用户正在使用服务发送电子邮件,您应该要求用户(第一次)登录它,然后您可以生成一个会话(在指定的时间段内)并基于此您应该发送电子邮件。一旦会话密钥过期,用户应该被强制重新登录。 因此,在成功登录后,将为每个将使用此服务发送电子邮件的用户生成一个会话。

因此,这不需要在任何地方保存密码,因为不建议以原始形式或任何其他可以检索的形式保存密码。

【讨论】:

    猜你喜欢
    • 2015-11-26
    • 2023-03-19
    • 1970-01-01
    • 2016-04-17
    • 2017-12-07
    • 1970-01-01
    • 1970-01-01
    • 2016-08-31
    • 2014-05-23
    相关资源
    最近更新 更多