【发布时间】:2016-08-12 12:31:08
【问题描述】:
我正在使用 SMF。在 mysql 中保存的 SMF 密码如:
sha1(usernamepassword);
一些哈希值可以正常工作。但其他包含特殊字符(如“öüşığ”和空格等)的哈希不匹配。
例如,“aksak temüraga”应转换为 sha1 为“4b4eb0eed79356eb56eb9058e6dea20d71e48e3c”,但它转换为 sha1 为“c4aa8328bf5ec76cfc0416fd7ec40f8dea7f3d62”
【问题讨论】:
-
很可能是编码问题。
-
要明确我正在尝试为我的论坛进行外部登录,但我想我因特殊字符而失败了。
-
咨询How to support UTF-8 completely in a web application - 以前称为“UTF-8 一直到...”
-
不要在您的数据库中存储 un-salted 哈希。请阅读有关如何在数据库中安全存储加盐哈希密码的基本介绍。
-
顺便说一句,不要使用 sha1;它已经旧了,不能再信任了。我建议你使用像
password_hash()这样的本世纪的东西,设置一个带有0|1布尔标志的新列,并让你的用户使用新的更安全的密码更新他们的密码。完成后,您可以查询数据库以检查它是否已更改,并使用新的更安全的哈希。如果没有,建议他们更改密码。