我有一个使用 AngularJs 1.5 作为前端和 .net 框架作为后端的应用程序。在我的应用程序中,我必须将用户名和密码存储在来自前端的数据库中。要求是:
- AngularJs 将加密密码并将其发送到后端
- 在后端,加密的密码将存储在数据库中。
- 在后端代码中,有一个地方我们必须调用第三方 Web API,并且必须传递用户名和密码的解密形式以进行身份验证。
简而言之,前端应该加密密码,后端应该有能力解密它。
我分析了许多密码安全交易的技术。
- 哈希:这是安全传输密码的最佳方法。但问题是,我们无法将哈希密码反转为其原始形式。根据我的要求,我必须将哈希密码反转为其原始形式,因为我们有将原始形式的密码传递给第三方 API 进行身份验证。
- 对称算法使用相同的密钥进行解密和加密,因此需要将密钥安全地共享给前端和后端。如果我们对两边的键值进行硬编码,这不是一个好方法。
- 非对称算法分别使用公钥和私钥进行加密和解密。所以我认为这比上述两种技术安全得多。因为拥有公钥的入侵者无法解密密码。
我是使用 AngularJS 处理加密和解密的新手。我的查询是关于密钥处理的。我们如何在前端和后端安全地存储密钥,而不是在代码中硬编码它们。有没有安全的方法来共享这些密钥。哪种算法最适合我的要求?(根据我的分析,我发现不对称是满足此要求的更好选择)。