Penyulitan dan Penyahsulitan AES Menggunakan Fungsi MySQL
Apabila bekerja dengan data sensitif, penyulitan menjadi penting untuk melindungi maklumat daripada capaian yang tidak dibenarkan. MySQL menyediakan pelbagai fungsi penyulitan, termasuk AES_ENCRYPT dan AES_DECRYPT, untuk melindungi data. Walau bagaimanapun, sesetengah pengguna menghadapi kesukaran semasa mencuba penyahsulitan selepas penyulitan menggunakan fungsi ini.
Masalah:
Apabila menanyakan baris daripada jadual menggunakan AES_DECRYPT selepas menyulitkannya dengan AES_ENCRYPT, hasilnya mungkin muncul sebagai rentetan binari dan bukannya yang dijangkakan plaintext.
Penyelesaian:
Menurut dokumentasi MySQL, AES_DECRYPT harus mengembalikan rentetan asal selepas penyahsulitan. Walau bagaimanapun, mungkin terdapat situasi di mana ia masih mengembalikan rentetan perduaan.
Kod berikut menunjukkan penyelesaian untuk isu ini:
SELECT *, CAST(AES_DECRYPT(first_name, 'usa2010') AS CHAR(50)) first_name_decrypt FROM user
Dengan menghantar nilai yang dinyahsulit secara eksplisit kepada jenis aksara menggunakan CAST(), anda boleh memastikan bahawa ia dipaparkan sebagai rentetan yang boleh dibaca. Gunakan lajur first_name_decrypt dalam pertanyaan anda untuk mendapatkan semula teks biasa yang dinyahsulit dan bukannya lajur first_name yang asal.
Atas ialah kandungan terperinci Mengapakah AES_DECRYPT mengembalikan rentetan binari dan bukannya teks biasa dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!