如何在服务之间安全地存储和传递第三方服务的密码?

问题描述 投票:0回答:2

我们正在使用管理用户文档的应用程序。我们正在实施的一项新功能-处理用户的电子邮件。

settings选项卡中的用户输入他的凭据(登录名,密码,imapProvider)。然后,我们会将这些数据传递给另一个负责检索电子邮件的服务。

问题

  • 我们无法存储和传递普通密码

必须有一种机制,一方面可以加密密码,另一方面可以解密。有什么想法如何实施吗?预先感谢。

python microservices soa
2个回答
0
投票

有多种方法可以实现,我建议您查找SHA - 256或其他方法。应该有很多有关单向功能和加密的信息。

您不必检查密码是否匹配,只需比较单向加密的输出。

伪代码:

password_string = ‘some password‘
encrypted_pw = sha256(password_string)
[...]
if encrypted_pw == encrypted_pw_to_compare:
[...]

这比以原始格式存储和处理用户数据更安全。


0
投票

您可以让您的电子邮件服务生成一个RSA public/private密钥对。电子邮件服务将是唯一知道私钥(用于解密)的人,但它将与其他服务共享公钥(用于加密)。电子邮件登录数据应该以加密方式存储,并且最好不要存储在电子邮件服务上(如果电子邮件服务受到威胁,来自用户的电子邮件登录数据也不会那样)。使用公共密钥加密甚至可以在前端使用javascript进行。

但请注意,强烈建议您不要实施自己的加密堆栈,因为有千种方法可以将其弄错。除非您是密码学专家,否则请使用受信任的库。

© www.soinside.com 2019 - 2024. All rights reserved.