Rumah > pembangunan bahagian belakang > tutorial php > Penggunaan pustaka fungsi penyulitan dan penyahsulitan PHP

Penggunaan pustaka fungsi penyulitan dan penyahsulitan PHP

王林
Lepaskan: 2023-06-16 10:52:02
asal
1720 orang telah melayarinya

Penggunaan pustaka fungsi penyulitan dan penyahsulitan PHP

Apabila isu keselamatan rangkaian menjadi semakin ketara, penyulitan telah menjadi bahagian yang amat diperlukan dalam teknologi rangkaian moden. Dalam PHP, perpustakaan fungsi penyulitan dan penyahsulitan menyediakan banyak fungsi penyulitan dan penyahsulitan, yang boleh digunakan untuk memproses maklumat sensitif dan memastikan keselamatan data. Artikel ini akan memperkenalkan penggunaan pustaka fungsi penyulitan dan penyahsulitan PHP.

1. Fungsi penyulitan dan penyahsulitan yang biasa digunakan

  1. penyulitan md5:

penyulitan md5 ialah kaedah penyulitan tidak boleh diubah, selalunya digunakan untuk menyimpan kata laluan dan bacaan pruf Sahkan integriti fail. Penggunaannya sangat mudah, sebagai contoh:

$message = 'password';
$encrypted = md5($message);
Salin selepas log masuk
  1. penyulitan sha1:

penyulitan sha1 juga merupakan kaedah penyulitan tidak boleh diubah, dan penggunaannya serupa dengan penyulitan md5. Contohnya:

$message = 'password';
$encrypted = sha1($message);
Salin selepas log masuk
  1. penyulitan base64:

penyulitan base64 ialah kaedah penyulitan boleh balik yang sesuai untuk pengekodan data binari ke dalam format aksara ASCII. Contohnya:

$message = 'password';
$encrypted = base64_encode($message);
Salin selepas log masuk

penyahsulitan base64 boleh menggunakan fungsi base64_decode. Contohnya:

$encrypted = 'cGFzc3dvcmQ=';
$message = base64_decode($encrypted); 
Salin selepas log masuk
  1. Penyulitan AES:

Penyulitan AES menyediakan kaedah penyulitan boleh balik yang boleh digunakan untuk melindungi penghantaran dan storan data. Penggunaannya adalah seperti berikut:

$message = 'password';
$key = 'mysecretkey';
$encrypted = openssl_encrypt($message, 'AES-256-CBC', $key);
Salin selepas log masuk

Antaranya, 'AES-256-CBC' ialah algoritma penyulitan, dan $key ialah kuncinya. Penyahsulitan AES boleh menggunakan fungsi openssl_decrypt. Contohnya:

$encrypted = 'G0TzOGxUWSJ2XOGVTYaZDFtB26oTVPqsIiL0FmzNVcA=';
$key = 'mysecretkey';
$message = openssl_decrypt($encrypted, 'AES-256-CBC', $key);
Salin selepas log masuk
  1. Penyulitan RSA:

Penyulitan RSA menyediakan penyulitan kunci awam dan kaedah penyahsulitan kunci persendirian, sesuai untuk senario penyulitan data biasa. Penggunaannya adalah seperti berikut:

Mula-mula jana kunci awam dan peribadi:

$privKey = openssl_pkey_new(array(
    'private_key_bits' => 1024,
    'private_key_type' => OPENSSL_KEYTYPE_RSA,
));

openssl_pkey_export($privKey, $pkey);

$pubKey = openssl_pkey_get_details($privKey);
$pubKey = $pubKey['key'];
Salin selepas log masuk

Kemudian gunakan kunci awam untuk menyulitkan:

$message = 'password';
$encrypted = '';
$success = openssl_public_encrypt($message, $encrypted, $pubKey);
Salin selepas log masuk

Penyahsulitan RSA boleh menggunakan fungsi openssl_private_decrypt. Contohnya:

$encrypted = '';
$message = '';
$success = openssl_private_decrypt($encrypted, $message, $privKey);
Salin selepas log masuk

2. Penggunaan modul penyulitan dan penyahsulitan

Dalam aplikasi praktikal, kami mungkin perlu menggunakan modul penyulitan dan penyahsulitan yang lengkap untuk mengendalikan keselamatan data. Dalam PHP, terdapat beberapa modul penyulitan dan penyahsulitan yang sangat baik, seperti mcrypt dan sodium. Berikut menerangkan cara menggunakan kedua-dua modul ini.

  1. modul mcrypt:

modul mcrypt ialah modul penyulitan dan penyahsulitan yang digunakan secara meluas dalam PHP, menyediakan pelbagai algoritma penyulitan simetri dan algoritma penyulitan asimetrik. Penggunaannya adalah seperti berikut:

Mula-mula tetapkan kunci dan vektor permulaan:

$key = 'mysecretkey';
$iv = mcrypt_create_iv(
mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_CBC),
MCRYPT_RAND);
Salin selepas log masuk

Kemudian gunakan fungsi mcrypt_encrypt untuk menyulitkan:

$message = 'password';
$encrypted = mcrypt_encrypt(
MCRYPT_RIJNDAEL_256,
$key,
$message,
MCRYPT_MODE_CBC,
$iv
);
Salin selepas log masuk

penyahsulitan mcrypt boleh menggunakan fungsi mcrypt_decrypt. Contohnya:

$decrypted = mcrypt_decrypt(
MCRYPT_RIJNDAEL_256,
$key,
$encrypted,
MCRYPT_MODE_CBC,
$iv
);

$decrypted = rtrim($decrypted, "");
echo $decrypted;
Salin selepas log masuk
  1. modul natrium:

modul natrium ialah modul penyulitan dan penyahsulitan yang diperkenalkan dalam PHP7 dan ke atas, menyediakan banyak ciri penyulitan lanjutan, seperti fungsi pencincangan kata laluan dan algoritma tandatangan digital, dsb. Penggunaannya adalah seperti berikut:

Pertama jana kunci:

$key = sodium_crypto_secretbox_keygen();
Salin selepas log masuk

Kemudian gunakan fungsi sodium_crypto_secretbox untuk menyulitkan:

$message = 'password';
$nonce = random_bytes(SODIUM_CRYPTO_SECRETBOX_NONCEBYTES);
$encrypted = sodium_crypto_secretbox($message, $nonce, $key);
Salin selepas log masuk

Penyahsulitan sodium boleh menggunakan fungsi sodium_crypto_secretbox_open. Contohnya:

$decrypted = sodium_crypto_secretbox_open($encrypted, $nonce, $key);

if ($decrypted === false) {
    throw new Exception('Failed to decrypt message');
}

echo $decrypted;
Salin selepas log masuk

3. Ringkasan

Hari ini, apabila keselamatan rangkaian semakin penting, penyulitan telah menjadi teknologi penting untuk melindungi privasi data. PHP menyediakan banyak perpustakaan dan modul fungsi penyulitan dan penyahsulitan Pembangun boleh memilih kaedah penyulitan yang paling sesuai mengikut keperluan yang berbeza untuk memastikan keselamatan data. Melalui pengenalan artikel ini, saya percaya bahawa pembaca telah menguasai penggunaan asas perpustakaan fungsi penyulitan dan penyahsulitan PHP dan penggunaan modul penyulitan dan penyahsulitan yang biasa digunakan.

Atas ialah kandungan terperinci Penggunaan pustaka fungsi penyulitan dan penyahsulitan PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan