-1

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 は、暗号化キーからロードされる静的変数です
  • これは、問題を示すエラーや警告ではありません

ここで何が起こっているのか、誰にも分かりますか?

4

1 に答える 1