【问题标题】:Generate the password hash using php使用 php 生成密码哈希
【发布时间】:2015-05-12 09:22:16
【问题描述】:

我有一个用户数据库及其加密形式的密码。我想让用户使用用户名和密码登录网站。对于身份验证,我需要知道它们的加密类型,以便我可以将输入的密码与存储的密码匹配。我尝试了很多算法,但我无法锻炼加密机制。这是一个测试用例

原密码:alvin

数据库中的密码 :f9b0213127225c1c74d6662dee8acca297eff9e0

密码加密:sha1_v2.4.

:9j1jyse241v7cw0s8okkssgg448wgcogsggoww0

我想做的是从原始密码在数据库中创建密码。

关于如何将原始密码转换为数据库中密码的任何提示

P.S 该表是由 silverstripe CMS 创建的

编辑

我们不再使用 silverstripe CMS 并将我们的网站转换为移动应用程序。因此,不能选择使用 silverstripe 或其功能。但是,我们正在使用包含所有成员数据的成员表,包括身份验证信息。

【问题讨论】:

  • 如果数据库中的密码是散列的,那么忘记尝试解码它们;并且从不需要知道用户密码的值是什么
  • 要弄清楚这一点或多或少是不可能的。只需在表中添加一个标志以确定用户是否已升级到您的新算法(例如 password_hash),如果没有,则强制他们在下次登录时更改密码。
  • SilverStripe 使用 Member 类开箱即用地处理这个问题。 SilverStripe 登录表单将为您处理所有这些问题。无需重新发明此功能。
  • @MarkBaker 我们不需要知道用户密码。我们需要能够从登录表单转换密码,对其进行加密,并将其与存储的加密密码进行比较,以验证用户身份。不幸的是,我们无法弄清楚确切的加密方式
  • @3dgoo 我们正在远离 silverstripe 但保留用户数据库,因此无法使用 silverstripe 函数或类

标签: php encryption passwords sha1 silverstripe


【解决方案1】:

在 OP 的 cmets 中有很多仇恨。但它被误导了 - OP 没有尝试解码任何东西(并且在论坛上解释得更好:http://www.silverstripe.org/community/forums/migrating-a-site-to-silverstripe/show/101337

简而言之,正在尝试使用 SilverStripe 的数据库验证来自外部的用户(因此直接使用 Member 类不是'一件事)。

提供实际答案:

加密方法存储在成员表中,默认情况下为“blowfish”,并且可以根据用户进行更改。 您需要三个数据字段:

  • Member.PasswordEncryption
  • Member.Salt
  • 会员密码

第一个定义如何使用第二个,然后允许计算第三个(并因此检查)。

相当标准的东西。请参阅此处定义的类以获取更详细/特定的信息(参见“直接已知子类”): http://api.silverstripe.org/3.1/class-PasswordEncryptor.html

【讨论】:

  • 谢谢@agal。我昨天查看了密码加密器。没有找到答案。但是,您的回答让我看起来更深入,我认为我已经找到了解决方案。密码和盐的简单串联生成加密密码谢谢队友
猜你喜欢
  • 2016-02-06
  • 2014-02-24
  • 2012-03-19
  • 1970-01-01
  • 2018-12-20
  • 1970-01-01
  • 2018-12-20
  • 2014-05-26
相关资源
最近更新 更多