考虑到一次性密码本是牢不可破的(据我所知,请随时纠正我),如果我要生成一个密码本,并在用户使用时使用同样的密码本来加密网站的密码创建并将加密密码存储在我的数据库中,这是一种安全的方法吗?换句话说,只要没人知道这个垫子是什么,就可以永远保留同一个垫子吗?
我应该使用 mcrypt 之类的东西吗?
最佳答案
您将使用一次性密码本对密码进行加密。加密密码并不是最佳选择,因为无论您如何执行,都将能够解密密码。您的应用程序本身必须有权访问该 key (或多个 key ,因为每个一次性密码本只能加密一个密码),因此如果攻击者拥有足够的权限,他就可以进行攻击。
这就是为什么我们使用哈希函数来存储密码,它们是单向的,您可以检查输入的密码是否产生相同的哈希值,但无法取回原始密码。 PHP提供了函数password_hash()为了生成这样的哈希值,它处理了生成随机盐的所有陷阱,并使用缓慢的 BCrypt 来哈希密码。
关于PHP - 使用一次性密码本来存储加密密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19255493/