PHP 7.2中的Mcrypt和加密

时间:2018-07-03 20:48:28

标签: php

final class Encryption {
    private $key;

    public function __construct($key) {
        $this->key = hash('sha256', $key, true);
    }

    public function encrypt($value) {
        return strtr(base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, hash('sha256', $this->key, true), $value, MCRYPT_MODE_ECB)), '+/=', '-_,');
    }

    public function decrypt($value) {
        return trim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, hash('sha256', $this->key, true), base64_decode(strtr($value, '-_,', '+/=')), MCRYPT_MODE_ECB));
    }
}

由于mcrypt功能,以上代码在php 7.2中不再起作用。如何将其转换为php 7.2中的等效功能?

1 个答案:

答案 0 :(得分:0)

不推荐使用PHP的mcrypt库,而推荐使用openssl。

我建议同时使用AES-CBC-256和openssl_encryptopenssl_decrypt来代替MCRYPT_RIJNDAEL_256。

http://us2.php.net/manual/en/function.openssl-encrypt.php http://us2.php.net/manual/en/function.openssl-decrypt.php