Comment puis-je utiliser le hachage MD5 pour les mots de passe dans Laravel?

Je suis le portage sur une application héritée dans Laravel. L'ancienne application utilisée MD5 de hachage des mots de passe sans sel, j'ai donc besoin de répliquer que, dans Laravel. Pour l'enregistrement, nous sont en train de changer les mots de passe de bcrypt avec un sel, mais ce n'est pas un processus simple qui nécessite un nom d'utilisateur pour le faire - pour l'instant, j'ai juste besoin d'obtenir des connexions de travail avec l'héritage des hachages.

J'ai suivi ce guide pour convertir Auth::hash MD5: Comment utiliser le chiffrement SHA1 au lieu de BCrypt dans Laravel 4?

Quand j'imprime le mot de passe en texte brut et le hachage généré dans mon make méthode lors de l'enregistrement d'un compte:

public function make($value, array $options = array()) {
    echo $value.'<br>'.hash('md5', $value);
    exit;
    return hash('md5', $value);
}

Je reçois le texte suivant:

123456
e10adc3949ba59abbe56e057f20f883e

Grand, c'est ce dont j'ai besoin. Toutefois, lorsque cela est enregistré dans la base de données, je reçois un hachage différent totalement. Ma conjecture est que Laravel est saler le mot de passe ailleurs, mais je ne trouve pas où et comment le modifier.

Mon MD5Hasher.php fichier à l'intérieur de app/libraries:

<?php
class MD5Hasher implements Illuminate\Contracts\Hashing\Hasher {

    /**
     * Hash the given value.
     *
     * @param  string  $value
     * @return array   $options
     * @return string
     */
    public function make($value, array $options = array()) {
        return hash('md5', $value);
    }

    /**
     * Check the given plain value against a hash.
     *
     * @param  string  $value
     * @param  string  $hashedValue
     * @param  array   $options
     * @return bool
     */
    public function check($value, $hashedValue, array $options = array()) {
        return $this->make($value) === $hashedValue;
    }

    /**
     * Check if the given hash has been hashed using the given options.
     *
     * @param  string  $hashedValue
     * @param  array   $options
     * @return bool
     */
    public function needsRehash($hashedValue, array $options = array()) {
        return false;
    }

}

Mon MD5HashServiceProvider.php:

<?php
class MD5HashServiceProvider extends Illuminate\Support\ServiceProvider {

    /**
     * Register the service provider.
     *
     * @return void
     */
    public function register() {
        $this->app['hash'] = $this->app->share(function () {
            return new MD5Hasher();
        });

    }

    /**
     * Get the services provided by the provider.
     *
     * @return array
     */
    public function provides() {
        return array('hash');
    }

}

Mon AuthController.php se présente comme suit:

<?php
namespace App\Http\Controllers\Auth;
use Hash;
use App\User;
use Validator;
use Mail;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\ThrottlesLogins;
use Illuminate\Foundation\Auth\AuthenticatesAndRegistersUsers;
class AuthController extends Controller
{
/*
|--------------------------------------------------------------------------
| Registration & Login Controller
|--------------------------------------------------------------------------
|
| This controller handles the registration of new users, as well as the
| authentication of existing users. By default, this controller uses
| a simple trait to add these behaviors. Why don't you explore it?
|
*/
use AuthenticatesAndRegistersUsers, ThrottlesLogins;
//protected $redirectTo = '/account';
/**
* Create a new authentication controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('guest', ['except' => 'getLogout']);
}
/**
* Get a validator for an incoming registration request.
*
* @param  array  $data
* @return \Illuminate\Contracts\Validation\Validator
*/
protected function validator(array $data)
{
return Validator::make($data, [
'name' => 'required|max:255',
'email' => 'required|email|max:255|unique:users',
'password' => 'required|confirmed|min:6',
]);
}
/**
* Create a new user instance after a valid registration.
*
* @param  array  $data
* @return User
*/
protected function create(array $data)
{
$this->redirectTo = '/register/step-1';
$user = User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => Hash::make($data['password']),
]);
//email the user
Mail::send('emails.register', ['user' => $user], function($message) use ($user)
{
$message->to($user->email, $user->name)->subject('Edexus - Welcome');
});
//email the admin
Mail::send('emails.register-admin', ['user' => $user], function($message) use ($user)
{
$message->to('admins@***.com', 'Edexus')->subject('Edexus - New user sign up');
});
return $user;
}
}
SHA1 est obsolète.
merci pour le commentaire pénétrant. Je ne suis pas en utilisant SHA1, je suis en utilisant un MD5 (ce qui est encore pire), mais il fait partie d'un processus de migration de salé bcrypt.
Les mots de passe peuvent être hachées, soit dans le Modèle d'Utilisateur ou dans l'action authcontroller et les traits pertinents. Vous avez besoin de regarder là-bas pour le hachage ou veuillez fournir les fichiers pour pouvoir les aider.
J'ai ajouté mon AuthController.php à la question. J'ai dd la Hash::make au point d'appeler User::create() et le hachage est différente de celle qui a été enregistré.
désolé pour ça. LOL. J'ai pensé que vous aimeriez utiliser SHA1 en raison de this -> Comment utiliser le cryptage SHA1 au lieu de BCrypt dans Laravel 4?

OriginalL'auteur Mike | 2015-11-06