php - 用 mcrypt_encrypt 替换弃用的 mcrypt_cbc

标签 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_cbc 替换为 mcrypt_encrypt,但出现此错误:

mcrypt_encrypt(): Module initialization failed

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

最佳答案

这两个函数将返回相同的结果。

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

关于php - 用 mcrypt_encrypt 替换弃用的 mcrypt_cbc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37250852/

相关文章:

php - 当同一页面上有两个相同的 Jquery 时发生冲突

algorithm - 给定数据范围,需要巧妙的算法来计算图轴刻度的粒度

c - 在c中制作一长串加密子字符串

php - 需要有关 sql 注入(inject)的帮助

PHP DOM 如何在子项包含标签和文本节点时删除包装标签

php - PHP成功将if语句传递到新文件

database - 给定一组预定的键,如何重新排序键,以便在插入 B 树时使用最少数量的节点?

r - 列出数据框中没有观察值的所有因素(相互作用)组合,直到给定维度,删除冗余

php - 如何使用dcpcrypt在delphi和php之间同步加密