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 は、Web リクエストまたはティンカーを通じて機能します。
- 非推奨であることはわかっています。最近の暗号化 ( https://laravel.com/docs/5.3/encryption ) とは対照的に、mcrypt_encrypt を使用する必要があります。mcrypt_encrypt を使用して既に暗号化されたレガシー データがあるためです。
- $key は、暗号化キーからロードされる静的変数です
- これは、問題を示すエラーや警告ではありません
ここで何が起こっているのか、誰にも分かりますか?