おそらくご存じのとおり、拡張子 mcrypt は php 7.1 で非推奨になります。
最終的にこのバージョンに移行したい「レガシー」アプリケーションを維持するために使用していたので、テストを実行し、次のコードを使用するコードがあるため、100% のカバレッジを取得できないことを確認しました。
$key = 'sA*(DH';
// initialization vector
$iv = md5(md5($key));
$output = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($key), $string, MCRYPT_MODE_CBC, $iv));
このコードを使用して、このコードを openssl_encrypt に移植しようとしました
$key = md5('sA*(DH');
$iv = md5($key);
echo base64_encode(openssl_encrypt($data, "aes-256-cbc", $key, OPENSSL_RAW_DATA, $iv));
しかし、これには2つの問題があります:
- IV の長さは 16 文字にする必要があるため (md5 では 32 文字になります)、PHP の警告が表示されます。
- 出力は同じではありません(16文字に切り捨てても)
誰もが同様の問題を抱えていました(またはそれを修正する方法を知っていますか?)
ところで: 私は PHP の dev master バージョンを使用しています (7.1.0 alpha 3 であると思われます)。