Rumah > pembangunan bahagian belakang > tutorial php > Bolehkah OpenSSL Menyahsulit Data Disulitkan dengan Mcrypt?

Bolehkah OpenSSL Menyahsulit Data Disulitkan dengan Mcrypt?

Patricia Arquette
Lepaskan: 2024-12-02 04:08:15
asal
989 orang telah melayarinya

Can OpenSSL Decrypt Data Encrypted with Mcrypt?

Menaik taraf pustaka penyulitan saya daripada Mcrypt kepada OpenSSL

Bolehkah ia dilakukan?

Keserasian Mcrypt dengan OpenSSL adalah perkara yang perlu diperdebatkan. Sesetengah sumber mendakwa bahawa OpenSSL tidak boleh menyahsulit data yang disulitkan menggunakan Mcrypt, manakala yang lain mencadangkan ia boleh dilakukan dengan penggunaan padding.

[Post 1](https://stackoverflow.com/a/19748494/ 5834657) menyatakan bahawa penyahsulitan adalah mustahil, manakala [Siaran 2](https://stackoverflow.com/a/31614770/5834657) mencadangkan bahawa ia boleh dicapai dengan pelapik yang betul. Walau bagaimanapun, pelapik contoh yang disediakan dalam siaran ditujukan khusus untuk Mcrypt dan mungkin tidak boleh digunakan untuk OpenSSL.

Cuba dengan perpustakaan baharu

Untuk menguji keserasian, kami mengubah suai kod Mcrypt sedia ada kepada gunakan OpenSSL. Fungsi penyahsulitan yang diubah suai berbunyi seperti berikut:

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);

    $data = $this->unpad($dec);

    return $data;
}
Salin selepas log masuk

Kami menguji kod yang diubah suai ini dengan menyulitkan rentetan dengan perpustakaan Mcrypt dan kemudian cuba menyahsulitnya menggunakan kod berasaskan OpenSSL kami. Bagaimanapun, kami hanya menerima jawapan kosong. Ralat nampaknya berpunca daripada baris $data = $this->unpad($dec). Apabila kami mengulas baris ini, kami mendapat rentetan bercampur aduk yang menyerupai format asal yang disulitkan.

Kesimpulan

Malangnya, percubaan kami untuk menyahsulit data yang disulitkan Mcrypt menggunakan OpenSSL tidak berjaya. Ada kemungkinan bahawa padding khusus yang digunakan oleh Mcrypt tidak serasi dengan OpenSSL atau mungkin terdapat ketidakserasian asas lain yang menghalang penyahsulitan yang berjaya.

Penyiasatan lanjut diperlukan untuk menentukan sama ada benar-benar mustahil untuk menyahsulit yang disulitkan Mcrypt data dengan OpenSSL, atau jika terdapat penyelesaian yang masih belum ditemui.

Atas ialah kandungan terperinci Bolehkah OpenSSL Menyahsulit Data Disulitkan dengan Mcrypt?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan