-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 将通过网络请求或修补程序工作。
  • 我们知道它已被弃用。我们必须使用 mcrypt_encrypt 而不是最近的加密(https://laravel.com/docs/5.3/encryption),因为我们已经使用 mcrypt_encrypt 加密了遗留数据。
  • $key 是从加密密钥加载的静态变量
  • 这不是指示问题的错误或警告

有人知道这里会发生什么吗?

4

1 回答 1

0

根据 zaph 的反馈和一些灵魂搜索,我们将迁移我们的加密数据并使用更现代的东西。我们一直在避免它,因为它在大多数情况下仍然有效。但我们只是推迟了不可避免的事情。感谢您的反馈。

于 2016-11-30T21:54:49.247 回答