Rumah >pangkalan data >tutorial mysql >Mengapakah AES_DECRYPT mengembalikan rentetan binari dan bukannya teks biasa dalam MySQL?
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!