我正在开发一个用户必须登录的网络服务。我将用户数据存储在SQL数据库中,并通过PHP输入/输出。但我不想公开存放它。如何在PHP中加密密码,只有知道密码的人才能解锁?
我知道像phpBB这样的服务会对存储的密码使用某种隐藏/加密方式。
答案 0 :(得分:5)
您需要使用适当安全的算法对密码进行加密和散列。
答案 1 :(得分:3)
确保密码存储方案安全的最简单方法是使用标准库。
因为安全性往往要复杂得多,并且比大多数程序员单独解决的问题更加隐形,所以使用标准库几乎总是最简单,最安全(如果不是唯一的)可用选项。
有关详细信息,请参阅this answer
答案 2 :(得分:0)
您可能希望哈希密码 - 不加密密码。 Check out SHA-1。散列意味着您无法像加密一样检索原始数据。相反,您所做的是对用户输入进行散列并将其与数据库中的散列进行比较,以查看他们是否拥有正确的密码。这样做可以提高安全性,就像您的数据库遭到破坏一样 - 一堆哈希是无用的。
答案 3 :(得分:0)
保存MD5哈希并使其更安全,添加盐。
答案 4 :(得分:0)
好吧,你不应该用MD5加密它们(这不是真正安全的,大多数黑客都有转换表)。
因此,您可以使用SHA1(通常使用)散列它。
如果您想要更高的安全性,可以添加更多salt
这是键,您可以像这样添加(仅作为示例,通常使用):
salt+sha1(salt+pass)
这种组合可以用于多种语言。
答案 5 :(得分:0)
使用SHA-1(sha1 php内置函数)中的哈希密码进行多次salting递归(上面的答案中的代码相同,只循环几次)。这应该是足够的保护,所以即使入侵者以某种方式将他们的手放在哈希上,他们也不应该破解它们......
答案 6 :(得分:-1)
有可能散列密码(最好用盐):
$salt = random_string($length = 5);
$hash = $salt . sha1($salt . $password);
或加密存储(仅当您的MySQL连接受SSL保护时):
INSERT INTO `user` (`user`,`pass`) VALUES("username",ENCRYPT("password","secretkey"))