用mcrypt_encrypt替换已弃用的mcrypt_cbc

时间:2016-05-16 09:39:31

标签: php algorithm mcrypt

我有一个旧算法来编码我想用于PHP 7的密码

public function encriptarPass($cadena)
{
     $extra = (strlen($cadena)%8);
     for ($i = $extra; $i < 8; $i++) {
        $cadena .= chr(8-$extra);
     }
     $key = "stack";
     $iv = "stack";                    

     return strtoupper(bin2hex(mcrypt_cbc(MCRYPT_3DES, $key, $cadena, MCRYPT_ENCRYPT, $iv)));
}

我尝试用mcrypt_encrypt替换mcrypt_cbc,我收到此错误:

  

mcrypt_encrypt():模块初始化失败

我想更新算法以使用存储在数据库中的旧密码。 我知道我应该使用bcrypt或其他算法,但目前我需要更新这个旧算法

1 个答案:

答案 0 :(得分:0)

这两个函数将返回相同的内容。

function encriptarPass($cadena){
    $extra = (strlen($cadena)%8);
    for($i = $extra; $i < 8; $i++) {
        $cadena .= chr(8-$extra);
    }
    $key = "stack";
    $iv = "stack111";
    return strtoupper(bin2hex(mcrypt_cbc(MCRYPT_3DES, str_pad($key, 24, "\0"), $cadena, MCRYPT_ENCRYPT, $iv)));
}

function encriptarPass2($cadena){
    $extra = (strlen($cadena)%8);
    for($i = $extra; $i < 8; $i++) {
        $cadena .= chr(8-$extra);
    }

    $key = "stack";
    $iv = "stack111";
    return strtoupper(bin2hex(mcrypt_encrypt(MCRYPT_3DES, str_pad($key, 24, "\0"), $cadena, MCRYPT_MODE_CBC, $iv)));
}

示例:

echo encriptarPass('test987x'); // Writes 10C9B50682CC21909AC4346CDFC4586E
echo encriptarPass2('test987x'); // Writes 10C9B50682CC21909AC4346CDFC4586E