Laravel自定义用户模型-MD5 - TripleDES加密

时间:2018-03-16 21:24:08

标签: asp.net sql-server laravel encryption laravel-5

我正在将一个带有SQL DB的旧.net应用程序改编为Laravel框架。我已完成迁移和模型,sqlsrv驱动程序和连接文件正在运行,但我遇到了使用加密方法的问题。我对加密知之甚少。

生产中的应用程序具有以下加密功能:

    private string Key = "";
    private readonly byte[] IVector = new byte[8] { 17, 19, 25, 17, 10, 32, 161, 24 };

    public string Encrypt(string inputString)
    {

        byte[] buffer = Encoding.ASCII.GetBytes(inputString);
        TripleDESCryptoServiceProvider tripleDes = new TripleDESCryptoServiceProvider();
        MD5CryptoServiceProvider MD5 = new MD5CryptoServiceProvider();
        tripleDes.Key = MD5.ComputeHash(ASCIIEncoding.ASCII.GetBytes(Key));
        tripleDes.IV = IVector;
        ICryptoTransform ITransform = tripleDes.CreateEncryptor();
        return Convert.ToBase64String(ITransform.TransformFinalBlock(buffer, 0, buffer.Length));
    }

在Laravel上, Auth :: attempt 有效,但凭据不匹配,我认为是因为加密方法。

    Auth::attempt([
        'userName' => 'hard_coded_username',
        'password'  => 'hard_coded_password',
    ]);

我已经检查了不同的加密方法来验证它。

$db_pass        =   'hard_codded_encrypted_password_from_db';
$md5            =   md5($db_pass);
$bcrypt         =   bcrypt($md5);
$encrypted      =   Crypt::encrypt($db_pass);
$encryptedMD5   =   Crypt::encrypt($md5);

dd($md5, $bcrypt, $encryptedMD5, $encrypted, $encryptedMD5);

那么,我怎样才能让它发挥作用?任何建议或指南将不胜感激。

1 个答案:

答案 0 :(得分:0)

也许我之前没有解释过自己。使用 Laravel 在新框架中进行开发,我需要使用旧数据库登录。我错误地认为密码的加密不同,需要某种配置。但不,我只需要在新用户模型的getAuthPassword中使用 bcrypt ,就像这样。

public function getAuthPassword() {
return bcrypt($this->userPassword);
}