Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk Berhijrah dari Mcrypt ke OpenSSL tanpa Perubahan Kod Ketara?

Bagaimana untuk Berhijrah dari Mcrypt ke OpenSSL tanpa Perubahan Kod Ketara?

Barbara Streisand
Barbara Streisandasal
2024-11-22 05:30:14383semak imbas

How to Migrate from Mcrypt to OpenSSL without Significant Code Changes?

Berpindah dari Mcrypt ke OpenSSL tanpa Pengekodan Semula Ekstensif

Latar Belakang:

Aplikasi PHP anda pada masa ini menggunakan Mcrypt untuk penyulitan data dengan sifir Blowfish dan mod ECB. Walau bagaimanapun, anda menghadapi cabaran untuk berhijrah ke OpenSSL untuk penyulitan.

Perbezaan Utama:

  • OpenSSL menggunakan padding PKCS#7 manakala Mcrypt menggunakan PKCS#5.
  • OpenSSL tidak memerlukan Vektor Permulaan (IV) dalam mod ECB, tidak seperti Mcrypt.

Penyelesaian:

Untuk berhijrah dengan lancar tanpa pengekodan semula yang ketara, ikut langkah berikut:

  1. Buat Semula Data Disulitkan: Pad data secara manual dengan PKCS#7 sebelum menyulitkannya dengan Mcrypt. Contoh kod disediakan di bawah:

    $key = "anotherpassword1";
    $str = "does it work 12";
    $enc = mcrypt_encrypt(MCRYPT_BLOWFISH, $key, $str."", MCRYPT_MODE_ECB);
  2. Gunakan OpenSSL untuk Penyahsulitan: Selepas mencipta semula data yang disulitkan, gunakan OpenSSL untuk menyahsulitnya menggunakan sifir yang betul dan mod:

    $key = "anotherpassword1";
    $enc = "0e93dce9a6a88e343fe5f90d1307684c";
    $dec = openssl_decrypt($enc, 'bf-ecb', $key, true);
    echo $dec;

Nota: Anda menyebut bahawa panjang IV yang berbeza diperlukan untuk Mcrypt (56) dan OpenSSL (0). Walau bagaimanapun, mod ECB tidak menggunakan IV.

Dengan mengikuti langkah ini, anda boleh berhijrah daripada Mcrypt ke OpenSSL tanpa memerlukan pengubahsuaian kod yang meluas, memastikan keserasian dengan data anda yang disulitkan yang sedia ada.

Atas ialah kandungan terperinci Bagaimana untuk Berhijrah dari Mcrypt ke OpenSSL tanpa Perubahan Kod Ketara?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn