Rumah >pembangunan bahagian belakang >tutorial php >Penyulitan dan penyahsulitan dalam PHP: md5, SHA1, AES dan algoritma lain

Penyulitan dan penyahsulitan dalam PHP: md5, SHA1, AES dan algoritma lain

PHPz
PHPzasal
2023-05-11 17:00:093103semak imbas

Sebagai bahasa pengaturcaraan yang digunakan secara meluas, PHP memainkan peranan penting dalam pembangunan web. Dalam pembangunan web, keselamatan adalah isu penting, melibatkan penghantaran dan penyimpanan maklumat sensitif seperti kata laluan pengguna dan input pengguna. Untuk memastikan keselamatan maklumat pengguna, pembangun biasanya menggunakan pelbagai algoritma penyulitan untuk menyulitkan maklumat sensitif ini. Dalam PHP, algoritma penyulitan yang biasa digunakan termasuk MD5, SHA1, AES, dll. Artikel ini akan memperkenalkan secara terperinci ciri, penggunaan dan senario aplikasi bagi algoritma penyulitan ini.

1. Algoritma penyulitan MD5

MD5, nama penuh ialah Message-Digest Algorithm 5, ialah fungsi cincang yang biasa digunakan untuk memampatkan maklumat dalam sebarang panjang ke dalam data 128-bit. Dalam PHP, kata laluan pengguna dan maklumat sensitif lain boleh disulitkan menggunakan algoritma penyulitan MD5, dengan itu meningkatkan keselamatannya. Penggunaan algoritma penyulitan MD5 adalah sangat mudah Anda boleh menggunakan kod berikut untuk penyulitan:

$source_str = 'Hello World!';
$md5_str = md5($source_str);
echo $md5_str;

Dalam kod di atas, kami mula-mula mentakrifkan pembolehubah rentetan sebagai maklumat asal untuk disulitkan . Kemudian, gunakan fungsi md5 untuk menyulitkan rentetan dan tetapkan hasilnya kepada pembolehubah $md5_str. Akhir sekali, kami menggunakan pernyataan gema untuk mengeluarkan hasil penyulitan ke skrin. Selepas melaksanakan kod ini, hasil output ialah:

b94d27b9934d3e08a52e52d7da7dabfa

Daripada hasil output, anda boleh melihat bahawa maklumat asal selepas penyulitan MD5 telah ditukar kepada satu siri aksara yang kelihatan tidak teratur. Ini bermakna dengan penyahsulitan terbalik bagi maklumat yang disulitkan, hampir mustahil untuk memulihkan maklumat asal. Oleh itu, dalam aplikasi praktikal, algoritma MD5 sering digunakan untuk menyulitkan maklumat sensitif seperti kata laluan pengguna.

2. Algoritma penyulitan SHA1

SHA1, nama penuhnya ialah Secure Hash Algorithm 1, ialah fungsi cincang, serupa dengan algoritma MD5, dan juga boleh memampatkan maklumat daripada sebarang panjang kepada 160 bit data. Perbezaannya ialah output algoritma SHA1 lebih panjang daripada algoritma MD5, jadi ia mempunyai keselamatan yang lebih tinggi. Dalam PHP, sangat mudah untuk menggunakan algoritma penyulitan SHA1 Anda boleh menggunakan kod berikut untuk penyulitan:

$source_str = 'Hello World!';
$sha1_str = sha1($source_str);
echo $sha1_str;

Dalam kod di atas, kami juga mentakrifkan pembolehubah rentetan "Hello World!" untuk disulitkan. Kemudian, gunakan fungsi sha1 untuk menyulitkan rentetan dan tetapkan hasilnya kepada pembolehubah $sha1_str. Akhir sekali, kami menggunakan pernyataan gema untuk mengeluarkan hasil penyulitan ke skrin. Selepas melaksanakan kod ini, hasil output ialah:

2ef7bde608ce5404e97d5f042f95f89f1c232871

Seperti yang dapat dilihat daripada hasil output, maklumat asal selepas penyulitan SHA1 juga ditukar kepada satu siri aksara yang kelihatan tidak teratur. Berbanding dengan algoritma MD5, hasil keluaran algoritma SHA1 lebih panjang dan lebih sukar untuk dinyahsulit secara terbalik. Oleh itu, algoritma SHA1 sering digunakan apabila menyulitkan maklumat yang lebih sensitif.

3. Algoritma Penyulitan AES

AES, nama penuhnya ialah Advanced Encryption Standard, ialah standard penyulitan lanjutan dan algoritma penyulitan simetri, biasanya digunakan untuk menyulitkan penghantaran data rangkaian, penyimpanan data, elektronik Maklumat sensitif seperti e-mel dan fail. Dalam PHP, menggunakan algoritma penyulitan AES memerlukan bantuan perpustakaan sambungan mcrypt. Penggunaan khusus adalah seperti berikut:

$key = '1234567890123456'; // 密钥长度必须是16、24或32个字符
$plaintext = 'Hello World!'; // 要加密的明文
$iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC), MCRYPT_RAND); // 随机生成iv
$ciphertext = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $plaintext, MCRYPT_MODE_CBC, $iv); // 加密处理
echo $ciphertext;

Dalam kod di atas, kami mula-mula menentukan kunci $kunci dan menetapkan rentetan teks biasa "Hello World untuk disulitkan kepada pembolehubah $plaintext!" Kemudian, gunakan fungsi mcrypt_create_iv untuk menjana iv rawak. Ambil perhatian bahawa panjang iv mesti sepadan dengan algoritma Rijndael 128-bit, jadi di sini kita menggunakan fungsi mcrypt_get_iv_size untuk mendapatkan panjang standard iv. Seterusnya, gunakan fungsi mcrypt_encrypt untuk menyulitkan rentetan teks biasa dan tetapkan hasil penyulitan kepada pembolehubah $ciphertext. Akhir sekali, kami menggunakan pernyataan gema untuk mengeluarkan hasil penyulitan ke skrin. Selepas melaksanakan kod ini, hasil output ialah:

E¦H­°hÎ!!DS5%:W=š•¥ 

Daripada hasil output, anda boleh melihat bahawa maklumat asal selepas penyulitan AES telah ditukar kepada satu siri aksara yang kelihatan tidak teratur. Berbanding dengan algoritma MD5 dan SHA1, algoritma AES menggunakan prinsip penyulitan yang lebih kompleks dan oleh itu lebih selamat dan boleh dipercayai. Dalam aplikasi praktikal, algoritma AES sering digunakan untuk menyulitkan maklumat yang lebih sensitif.

Ringkasnya, algoritma penyulitan MD5, SHA1 dan AES semuanya mempunyai ciri dan senario aplikasi yang berbeza. Dalam pembangunan web, penggunaan algoritma penyulitan secara berkesan dapat meningkatkan keselamatan maklumat pengguna, dengan itu memastikan privasi dan keselamatan pengguna. Pembangun boleh memilih algoritma penyulitan yang sesuai untuk menyulitkan maklumat sensitif berdasarkan keperluan sebenar.

Atas ialah kandungan terperinci Penyulitan dan penyahsulitan dalam PHP: md5, SHA1, AES dan algoritma lain. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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