Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk menyulitkan dan menyahsulit data dalam PHP?
PHP ialah bahasa pengaturcaraan bahagian pelayan sumber terbuka yang digunakan secara meluas dalam bidang pembangunan web. Memandangkan aplikasi web sering melibatkan maklumat sensitif pengguna, seperti kata laluan, nombor kad bank, dsb., adalah amat penting untuk menyulitkan dan menyahsulit maklumat ini.
Artikel ini akan memperkenalkan cara menyulitkan dan menyahsulit data dalam PHP, terutamanya termasuk kandungan berikut:
1 Algoritma penyulitan yang biasa digunakan dan ciri-cirinya
Ciri-ciri: Algoritma MD5 tidak boleh diterbalikkan, iaitu nilai input tidak boleh disimpulkan daripada nilai output algoritma MD5 memastikan bahawa nilai output input yang sama adalah sama; mudah retak oleh serangan perlanggaran.
Ciri: Algoritma SHA1 tidak boleh diterbalikkan; panjang nilai output algoritma SHA1 lebih panjang daripada algoritma MD5, memastikan keselamatan yang lebih baik tidak dapat menghalang serangan perlanggaran sepenuhnya;
Ciri-ciri: pengekodan base64 bukan algoritma penyulitan sebenar, hanya kaedah pengekodan base64 tidak mengubah kandungan data, tetapi hanya mengubah perwakilan data yang boleh meningkatkan kestabilan penghantaran data dan keselamatan.
Ciri-ciri: Algoritma AES ialah penyulitan simetri, dan kunci yang sama digunakan untuk penyulitan dan penyahsulitan; algoritma AES mempunyai keselamatan dan kecekapan yang lebih baik; lebih tinggi keselamatannya.
2. Gunakan penyulitan MD5 dalam PHP
Gunakan fungsi md5() dalam PHP untuk menyulitkan rentetan dengan MD5 Kod sampel adalah seperti berikut:
$str = "hello world"; $encrypted_str = md5($str); echo $encrypted_str;
Hasil output ialah:
5eb63bbbe01eeed093cb22bb8f5acdc3
3. Gunakan penyulitan sha1 dalam PHP
Gunakan fungsi sha1() dalam PHP untuk menyulitkan rentetan SHA1 adalah seperti berikut:
rreeeThe hasil output ialah :
$str = "hello world"; $encrypted_str = sha1($str); echo $encrypted_str;
4. Gunakan pengekodan base64 dalam PHP
Gunakan fungsi base64_encode() dalam PHP untuk mengekod rentetan base64 dan gunakan fungsi base64_decode() untuk mengekod rentetan base64 . Penyahkodan, kod sampel adalah seperti berikut:
2ef7bde608ce5404e97d5f042f95f89f1c232871
5. Gunakan perpustakaan sambungan openssl dalam PHP untuk penyulitan dan penyahsulitan AES
Gunakan perpustakaan sambungan openssl dalam PHP untuk melaksanakan penyulitan dan penyahsulitan AES data, kod sampel Seperti berikut:
$str = "hello world"; $encoded_str = base64_encode($str); echo $encoded_str . " "; // 输出:aGVsbG8gd29ybGQ= $decoded_str = base64_decode($encoded_str); echo $decoded_str; // 输出:hello world
Hasil output ialah:
// AES加密 function encrypt($str, $key) { $iv_size = openssl_cipher_iv_length('AES-256-CBC'); $iv = openssl_random_pseudo_bytes($iv_size); // 生成随机IV $encrypted_str = openssl_encrypt($str, 'AES-256-CBC', $key, OPENSSL_RAW_DATA, $iv); $result = base64_encode($iv . $encrypted_str); return $result; } // AES解密 function decrypt($encrypted_str, $key) { $encrypted_str = base64_decode($encrypted_str); $iv_size = openssl_cipher_iv_length('AES-256-CBC'); $iv = substr($encrypted_str, 0, $iv_size); $encrypted_str = substr($encrypted_str, $iv_size); $result = openssl_decrypt($encrypted_str, 'AES-256-CBC', $key, OPENSSL_RAW_DATA, $iv); return $result; } // 测试代码 $key = "12345678901234567890123456789012"; // AES密钥,32位 $str = "hello world"; $encrypted_str = encrypt($str, $key); echo $encrypted_str . " "; $decrypted_str = decrypt($encrypted_str, $key); echo $decrypted_str . " ";
6. Langkah-langkah untuk menggunakan perpustakaan sambungan mcrypt untuk penyulitan dan penyahsulitan AES dalam PHP
Gunakan perpustakaan sambungan mcrypt untuk penyulitan dan penyahsulitan AES Langkah-langkah untuk penyahsulitan adalah seperti berikut:
7KdkeT91N7zg8WZrZ1Oehg==xsYlbGhMF8dNQXH1LqTwVw== hello world
extension_loaded('mcrypt'); // 检查是否已经加载mcrypt扩展库
$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC); $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
$encrypted_str = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $str, MCRYPT_MODE_CBC, $iv);
$decrypted_str = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, $encrypted_str, MCRYPT_MODE_CBC, $iv);
Kod sampel penyulitan dan penyahsulitan AES yang lengkap adalah seperti berikut:
$encrypted_str = base64_encode($iv . $encrypted_str);
Hasil output ialah:
$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC); $iv = substr($encrypted_str, 0, $iv_size); $encrypted_str = substr($encrypted_str, $iv_size);
Ringkasan:
Di atas ialah kaedah data penyulitan dan penyahsulitan dalam PHP Algoritma penyulitan yang berbeza mempunyai ciri-ciri yang berbeza dan senario yang boleh digunakan hendaklah memilih kaedah penyulitan yang sesuai berdasarkan keperluan sebenar dan keperluan keselamatan. Semasa menggunakan kaedah penyulitan, anda juga perlu memberi perhatian kepada perlindungan keselamatan kunci dan proses penyulitan untuk mengelak daripada diserang oleh penggodam.
Atas ialah kandungan terperinci Bagaimana untuk menyulitkan dan menyahsulit data dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!