如何在 Laravel 中对密码使用 MD5 哈希?
问题描述
我正在将旧版应用移植到 Laravel.旧的应用程序使用 MD5 来散列密码而不加盐,所以我需要在 Laravel 中复制它.作为记录,我们正在使用 salt 将密码更改为 bcrypt,但这不是一个简单的过程,需要用户登录才能这样做 - 同时我只需要使用旧哈希登录即可.
I'm porting over a legacy app into Laravel. The old app used MD5 to hash the passwords without a salt, so I need to replicate that within Laravel. For the record, we are changing the passwords to bcrypt with a salt, but it's not a simple process and requires a user login to do so - for the meantime I just need to get logins working with the legacy hashes.
我已按照本指南将 Auth::hash
转换为 MD5:如何在 Laravel 4 中使用 SHA1 加密而不是 BCrypt?
I have followed this guide to convert Auth::hash
to MD5: How to use SHA1 encryption instead of BCrypt in Laravel 4?
当我在注册帐户时以纯文本格式打印密码和在我的 make
方法中生成的哈希值时:
When I print out the password in plain text and the generated hash in my make
method when registering an account:
我得到以下信息:
太好了,这正是我需要的.但是,当它被保存到数据库时,我得到了一个完全不同的哈希值.我的猜测是 Laravel 正在其他地方添加密码,但我找不到在哪里以及如何覆盖它.
Great, that's what I need. However, when that is saved to the database I get a different hash entirely. My guess is that Laravel is salting the password elsewhere, but I can't find where and how to override this.
我在 app/libraries
中的 MD5Hasher.php
文件:
My MD5Hasher.php
file inside app/libraries
:
我的MD5HashServiceProvider.php
:
我的 AuthController.php
如下所示:
推荐答案
检查用户模型中的密码修改器.在控制器中对密码进行散列后,它再次对密码进行散列.
Check out the password mutator in your User Model. It's hashing the password another time after hashing it in the controller.
我的建议是在您的创建() 和更新() 模型事件中散列一次密码,然后将其从增变器和控制器中删除.
My recommendation is hash the password once in your creating() and updating() model events, and remove it from the mutator and controller.
这篇关于如何在 Laravel 中对密码使用 MD5 哈希?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!