ホームページ > バックエンド開発 > PHPチュートリアル > 復号化の互換性を維持しながら、Mcrypt から OpenSSL 暗号化に移行できますか?

復号化の互換性を維持しながら、Mcrypt から OpenSSL 暗号化に移行できますか?

Mary-Kate Olsen
リリース: 2024-12-30 19:12:13
オリジナル
690 人が閲覧しました

Can I Migrate from Mcrypt to OpenSSL Encryption While Maintaining Decryption Compatibility?

暗号化ライブラリを Mcrypt から OpenSSL にアップグレードしています

質問:

は可能ですか?暗号化ライブラリを Mcrypt から OpenSSL にアップグレードし、次を使用して暗号化されたデータを復号化する機能を保持します。 Mcrypt?

矛盾する情報:

これら 2 つのライブラリ間の互換性に関してオンラインで矛盾する情報があるようです。

  • ある情報源は主張しています。 Mcrypt で暗号化されたデータを OpenSSL で復号化することは不可能です。
  • 別の情報源は、可能であることを示唆しています。 using padding.

追加コンテキスト:

現在 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート