PHP7.1 mcrypt替代方案

时间:2017-01-19 11:24:12

标签: php encoding decode mcrypt php-7.1

自PHP 7.1.0起,Mcrypt函数已被弃用。

我弃用的字符串编码/解码函数:

visited

你能提出一些替代方案吗?

5 个答案:

答案 0 :(得分:16)

您应该使用openssl_encrypt代替。此致!

答案 1 :(得分:1)

考虑使用defuseRNCryptor,它们提供了完整的解决方案,正在维护并且是正确的。

答案 2 :(得分:0)

对于MCRYPT_RIJNDAEL_256,我在这里发布了PHP7.3的完整答案:https://stackoverflow.com/a/53937314/243782

摘要:

phpseclib库中如此工作

$rijndael = new \phpseclib\Crypt\Rijndael(\phpseclib\Crypt\Rijndael::MODE_ECB);
$rijndael->setKey(ENCRYPT_KEY);
$rijndael->setKeyLength(256);
$rijndael->disablePadding();
$rijndael->setBlockLength(256);

$decoded = $rijndael->decrypt($term);

答案 3 :(得分:0)

echo encrypt_openssl($str, $key);

function encrypt_openssl($msg, $key, $iv = null) {
        $iv_size = openssl_cipher_iv_length('AES-256-CBC');
        if (!$iv) {
            $iv = openssl_random_pseudo_bytes($iv_size);
        }
        $encryptedMessage = openssl_encrypt($msg, 'AES-256-CBC', $key, OPENSSL_RAW_DATA, $iv);
        return base64_encode($iv . $encryptedMessage);
    }

mcrypt 可能会在PHP 7.1替代 openssl

中删除

答案 4 :(得分:-2)

如上所述,open_ssl是mcrypt的一个很好的选择。 我对open_ssl唯一的问题是它不能用于大字符串。

我写了一个脚本(静态类),它克服了这个问题(大块字符串被拆分成块并在后台单独加密/解密)。

见公众要点: https://gist.github.com/petermuller71/33616d55174d9725fc00a663d30194ba