Rumah  >  Artikel  >  pembangunan bahagian belakang  >  PHP melaksanakan teknologi penyulitan asimetri RSA

PHP melaksanakan teknologi penyulitan asimetri RSA

WBOY
WBOYasal
2023-06-18 09:34:443731semak imbas

Teknologi penyulitan asimetri RSA ialah salah satu kaedah penyulitan paling popular dan selamat pada masa ini. Sebagai bahasa pengaturcaraan yang digunakan secara meluas, PHP juga mempunyai kelebihan unik dalam melaksanakan penyulitan RSA. Artikel ini akan memperkenalkan pembaca kepada cara menggunakan PHP untuk melaksanakan teknologi penyulitan asimetri RSA.

1. Apakah itu algoritma RSA

Algoritma RSA ialah teknologi penyulitan asimetri, yang biasanya digunakan untuk penyulitan data dan tandatangan digital. Keselamatannya terutamanya berdasarkan masalah teori nombor, iaitu kesukaran memfaktorkan integer yang sangat besar dalam masa yang sangat singkat.

Proses penyulitan algoritma RSA adalah seperti berikut:

  1. Pilih dua nombor perdana besar p dan q, dan hitung produknya n = p*q; >Hitung φ (n) = (p-1)*(q-1); bahawa e dan d Memenuhi ed ≡ 1 (mod φ(n));
  2. Kunci awam ialah (n,e) dan kunci persendirian ialah (n,d);
  3. Apabila menyulitkan data, gunakan kunci awam e untuk menyulitkan, dan apabila menyahsulit data, gunakan d dalam kunci persendirian untuk menyahsulit.
  4. 2. Gunakan PHP untuk melaksanakan algoritma RSA
  5. Untuk menggunakan PHP untuk melaksanakan algoritma RSA, kita perlu menggunakan dua perpustakaan pihak ketiga yang penting: phpseclib dan OpenSSL. Yang pertama digunakan terutamanya untuk penyulitan bahagian hadapan, dan yang kedua digunakan untuk penyahsulitan latar belakang. Penggunaan kedua-dua perpustakaan ini diperkenalkan di bawah.
  6. Pustaka 2.1 phpseclib

phpseclib ialah perpustakaan kelas penyulitan dan penyahsulitan yang dilaksanakan dalam PHP Ia menyokong pelbagai algoritma penyulitan asimetri, termasuk RSA, DSA dan ECDSA. Apabila menggunakan phpseclib untuk penyulitan RSA, kita perlu melakukan langkah berikut:

Perkenalkan perpustakaan phpseclib:

require_once('Crypt/RSA.php');

Jana kunci awam dan peribadi:
  1. $rsa = new Crypt_RSA();
    $rsa->setPublicKeyFormat(CRYPT_RSA_PUBLIC_FORMAT_PKCS1);
    $rsa->setPrivateKeyFormat(CRYPT_RSA_PRIVATE_FORMAT_PKCS1);
    $keys = $rsa->createKey();
    file_put_contents('public_key.pem', $keys['publickey']);
    file_put_contents('private_key.pem', $keys['privatekey']);
Sulitkan menggunakan kunci awam:
  1. $data = 'hello, world';
    $rsa = new Crypt_RSA();
    $rsa->loadKey(file_get_contents('public_key.pem'));
    $ciphertext = $rsa->encrypt($data);
Nyahsulit menggunakan kunci persendirian:
  1. $rsa = new Crypt_RSA();
    $rsa->loadKey(file_get_contents('private_key.pem'));
    $plaintext = $rsa->decrypt($ciphertext);
  2. 2.2 Perpustakaan OpenSSL
    Pustaka OpenSSL ialah perpustakaan sumber terbuka yang mengandungi pelaksanaan pelbagai algoritma kriptografi dan protokol SSL/TLS. Dalam PHP, kita boleh menggunakan perpustakaan ini dengan memanjangkan perpustakaan openssl. Berikut ialah langkah untuk melaksanakan penyulitan RSA menggunakan OpenSSL:
Jana fail kunci peribadi:

$config = array(
    "digest_alg" => "sha512",
    "private_key_bits" => 2048,
    "private_key_type" => OPENSSL_KEYTYPE_RSA,
);
$private_key = openssl_pkey_new($config);
openssl_pkey_export_to_file($private_key, "private.key");

Jana fail kunci awam:
  1. $public_key = openssl_pkey_get_details($private_key);
    $public_key = $public_key["key"];
    file_put_contents("public.key", $public_key);
Gunakan kunci awam untuk menyulitkan:
  1. $data = 'hello, world';
    openssl_public_encrypt($data, $ciphertext, $public_key);
Gunakan kunci peribadi untuk menyahsulit:
  1. openssl_private_decrypt($ciphertext, $plaintext, $private_key);
  2. Ringkasan
    Gunakan PHP untuk melaksanakan teknologi penyulitan asimetri RSA boleh memberikan kami penyelesaian penghantaran dan perlindungan data yang lebih selamat dan boleh dipercayai. Artikel ini menerangkan langkah-langkah untuk melaksanakan algoritma RSA menggunakan phpseclib dan perpustakaan OpenSSL. Pembaca boleh memilih perpustakaan yang sesuai untuk pelaksanaan mengikut keperluan mereka sendiri. Apabila menggunakannya, keselamatan kunci persendirian harus dipastikan untuk mengelakkan data daripada diganggu dan dicuri secara haram.

Atas ialah kandungan terperinci PHP melaksanakan teknologi penyulitan asimetri RSA. 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