我们在 Windows 上的 PHP 7.0 下使用 Laravel 5.3 中内置的数据库播种。问题是每当我们使用 mcrypt_encrypt 对一些数据进行加密时,我们从 mcrypt_decrypt 得到的数据和我们传入的数据是不一样的。
$data = @mcrypt_encrypt(MCRYPT_RIJNDAEL_128, self::$key, $data, MCRYPT_MODE_CFB, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0");
$data = @mcrypt_decrypt(MCRYPT_RIJNDAEL_128, self::$key, $data, MCRYPT_MODE_CFB, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0");
在这种情况下,$data 是一些二进制字符串,而不是原始字符串。
- 这只发生在播种期间。mcrypt_encrypt/mcrypt_decrypt 将通过网络请求或修补程序工作。
- 我们知道它已被弃用。我们必须使用 mcrypt_encrypt 而不是最近的加密(https://laravel.com/docs/5.3/encryption),因为我们已经使用 mcrypt_encrypt 加密了遗留数据。
- $key 是从加密密钥加载的静态变量
- 这不是指示问题的错误或警告
有人知道这里会发生什么吗?