【发布时间】:2018-01-05 12:38:22
【问题描述】:
我想加密我的网络应用程序中使用的密码。通常我们将加密密码并将其保存到属性文件中,然后我们将对其进行解码。但是这里如果源代码是开源的,那么攻击者可以在源代码中找到解码方法,从而获得密码。
另一种方法是将密码保存到密钥库文件中,然后使用密钥库密码访问它。但同样的问题又出现了,攻击者可以看到密钥库密码。
谁能告诉我解决办法?
【问题讨论】:
-
你为什么不使用公钥/私钥来做必要的事情?您的私钥永远不会公开,因此即使您的加密算法已知,您的私钥也永远不会公开
-
你将如何将你的私钥提供给解密算法? .无论如何,该私钥将在源代码中可用吗?这样攻击者就可以使用它来解密。
-
一点也不!有几种方法可以做到这一点,作为 AWS 的忠实粉丝,您可以简单地从安全的 S3 存储桶中读取密钥,您可以且只有您可以访问该存储桶。您可以将密钥作为程序的输入...有多种方式
-
这些密码的用途是什么?如果你想验证你的用户,你根本不应该加密。您需要使用散列代替一些强大的散列,例如 PBKDF2、bcrypt、scrypt 和 Argon2。由于散列函数是单向函数,因此您将无法“解密”散列。为了验证您的用户,您可以再次通过哈希函数运行密码,以便与存储在数据库中的哈希值进行比较。查看更多:How to securely hash passwords?
-
@Ruskin 感谢您的回复。我会考虑这个
标签: security encryption web-applications