我知道有百万次这样的问题,但是我找不到适合我需求的答案。
我正在为我的公司构建小型内部密码管理器之类的东西,以存储各种服务器的登录数据等等。 注册新用户后,他的密码将以加盐/散列版本保存在数据库中,因此没有人可以访问它(对此,我认为这没问题,如果我输入错了,请更正我)。
但是,当用户登录时,他可以使用其登录详细信息添加新服务器。
问题是,如何存储它们。
因为在某些时候,我必须以纯文本形式(这是该应用程序的重点)向用户显示此登录详细信息。 我能想到的最好的方法是使用某种对称加密。 想法是应用程序将使用对称加密来加密登录详细信息,然后以这种方式将其保存到数据库中,然后在需要数据时再次从数据库中提取数据,并使用相同的密钥解密并呈现给用户(并且密钥应位于源中应用代码?)。
这可能是非对称加密,但是如果公钥和私钥存储在相同的源代码中是一样的,那么使用它没有任何好处吗?
这似乎不太安全,但我想不到更好的方法了。
是否有更好的方法来存储此登录数据?
如果这对您很重要,则应用程序将使用PHP,数据库应为Oracle
答案 0 :(得分:0)
我只会使用对称加密。标准步骤是:
将IV +密文+ MAC存储在数据库中。
这些天都可以在浏览器中运行(请参阅crypto-js和aes-js)。这样,服务器就永远不会看到纯文本密码(不确定是否是必需的)。
MAC也可以用作密码哈希,即,如果MAC验证失败,则表明提供的密码不正确。