【问题标题】:SHA1 does not matchSHA1 不匹配
【发布时间】: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 布尔标志的新列,并让你的用户使用新的更安全的密码更新他们的密码。完成后,您可以查询数据库以检查它是否已更改,并使用新的更安全的哈希。如果没有,建议他们更改密码。

标签: php mysql smf


【解决方案1】:

由于您尝试创建 SMF 论坛的外部登录,因此您必须使用 SMF 提供的散列。

关于你的问题,你应该看一下SMF安装的Sources\LogInOut.php文件,看看SMF是如何创建登录的。

然后您可以使用相同的技术进行外部登录。

【讨论】:

  • 他们应该改变服务 ;-) 在这个时代使用 sha1 的任何人都应该被关闭或重写以适应“本世纪”的安全问题。
  • 不仅要更改服务,还要进行迁移。你知道,没有人喜欢破坏向后兼容性的东西。我认为迁移是痛苦的,而不是改变散列:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-02-21
  • 1970-01-01
  • 1970-01-01
  • 2014-02-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多