Kendalikan Kata Laluan dengan Selamat: Penyulitan dan Penyahsulitan
Apabila menyimpan data sensitif seperti kata laluan, adalah penting untuk menggunakan langkah keselamatan yang sesuai. Walaupun fungsi pencincangan digunakan untuk mengamankan kata laluan yang tidak dapat dipulihkan, mungkin terdapat keadaan di mana penyulitan boleh balik diingini.
Walaupun terdapat salah tanggapan yang mengelilingi base64 sebagai kaedah penyulitan yang sah, ia kekal sebagai teknik pengekodan yang mudah. Sebaliknya, kami menyelidiki pendekatan yang lebih selamat untuk menyulitkan dan menyahsulit kata laluan, yang melibatkan mencipta perebutan unik untuk mengubah data sebelum dan selepas pengekodan base64.
Untuk melaksanakan kaedah ini, kami menentukan kunci ("kata laluan kepada (en/de)crypt") dan rentetan untuk disulitkan (" rentetan untuk disulitkan ").
Penyulitan Proses
$iv = mcrypt_create_iv( mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC), MCRYPT_DEV_URANDOM ); $encrypted = base64_encode( $iv . mcrypt_encrypt( MCRYPT_RIJNDAEL_128, hash('sha256', $key, true), $string, MCRYPT_MODE_CBC, $iv ) );
Kod ini memulakan proses penyulitan dengan mencipta vektor permulaan (IV) dan menggunakan algoritma cincang yang kuat (SHA-256) untuk menjana kunci penyulitan daripada kunci yang disediakan. Data tersebut kemudian disulitkan menggunakan algoritma penyulitan yang sangat selamat (RIJNDAEL-128) dalam mod CBC. Hasil yang disulitkan kemudiannya dikodkan base64 untuk menghasilkan rentetan yang dikelirukan.
Proses Penyahsulitan
$data = base64_decode($encrypted); $iv = substr($data, 0, mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC)); $decrypted = rtrim( mcrypt_decrypt( MCRYPT_RIJNDAEL_128, hash('sha256', $key, true), substr($data, mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC)), MCRYPT_MODE_CBC, $iv ), "" );
Proses penyahsulitan membalikkan urutan penyulitan. Rentetan berkod base64 dinyahkod, dan IV diperoleh semula. Kunci penyulitan dikira semula, dan data dinyahsulit menggunakan IV dan kunci asal. Akhir sekali, sebarang bait nol tertinggal dialih keluar, menghasilkan rentetan teks jelas asal.
Awas: Adalah penting untuk ambil perhatian bahawa kod yang diberikan, walaupun berkesan untuk menggambarkan proses penyulitan/penyahsulitan, adalah tidak dimaksudkan untuk kegunaan pengeluaran dalam bentuk semasa. Ia tidak mempunyai mekanisme pengesahan yang betul dan langkah keselamatan lain yang penting untuk melindungi data sensitif. Apabila berurusan dengan penyulitan kata laluan, sentiasa gunakan teknik penyulitan yang disahkan dan rujuk kepada amalan terbaik industri yang mantap untuk mendapatkan panduan.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menyulitkan dan Menyahsulit Kata Laluan Dengan Selamat Menggunakan PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!