暗号化ライブラリを Mcrypt から OpenSSL にアップグレードしています
質問:
は可能ですか?暗号化ライブラリを Mcrypt から OpenSSL にアップグレードし、次を使用して暗号化されたデータを復号化する機能を保持します。 Mcrypt?
矛盾する情報:
これら 2 つのライブラリ間の互換性に関してオンラインで矛盾する情報があるようです。
追加コンテキスト:
現在 Mcrypt を使用している暗号化クラスを OpenSSL を使用する暗号化クラスに変換しようとしています。ただし、Mcrypt バージョンで暗号化されたデータを復号化する際に問題が発生しています。
復号化の作業コード:
OpenSSL バージョンの復号化ルーチンの次の改訂されたコード動作することが確認されました:
public function decrypt($data, $key) { $salt = substr($data, 0, 128); $enc = substr($data, 128, -64); $mac = substr($data, -64); list ($cipherKey, $macKey, $iv) = $this->getKeys($salt, $key); if ($mac !== hash_hmac('sha512', $enc, $macKey, true)) { return false; } $dec = openssl_decrypt($enc, $this->cipher, $cipherKey, OPENSSL_RAW_DATA, $iv); return $dec; }
テスト結果:
この改訂されたコードをさまざまなデータとキーでテストしたところ、失敗はありませんでした。
結論:
暗号化ライブラリを Mcrypt から OpenSSL に変更し、更新された復号化を使用する場合に限り、以前のライブラリで暗号化されたデータを正常に復号化します。ルーティン。
以上が復号化の互換性を維持しながら、Mcrypt から OpenSSL 暗号化に移行できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。