使用openssl实现rsa非对称加密算法示例_php实例
/**
* 使用openssl实现非对称加密
* @since 2010-07-08
*/
class Rsa
{
/**
* private key
*/
private $_privKey;
/**
* public key
*/
private $_pubKey;
/**
* the keys saving path
*/
private $_keyPath;
/**
* the construtor,the param $path is the keys saving path
*/
public function __construct($path)
{
if(empty($path) || !is_dir($path)){
throw new Exception('Must set the keys save path');
}
$this->_keyPath = $path;
}
/**
* create the key pair,save the key to $this->_keyPath
*/
public function createKey()
{
$r = openssl_pkey_new();
openssl_pkey_export($r, $privKey);
file_put_contents($this->_keyPath . DIRECTORY_SEPARATOR . 'priv.key', $privKey);
$this->_privKey = openssl_pkey_get_public($privKey);
$rp = openssl_pkey_get_details($r);
$pubKey = $rp['key'];
file_put_contents($this->_keyPath . DIRECTORY_SEPARATOR . 'pub.key', $pubKey);
$this->_pubKey = openssl_pkey_get_public($pubKey);
}
/**
* setup the private key
*/
public function setupPrivKey()
{
if(is_resource($this->_privKey)){
return true;
}
$file = $this->_keyPath . DIRECTORY_SEPARATOR . 'priv.key';
$prk = file_get_contents($file);
$this->_privKey = openssl_pkey_get_private($prk);
return true;
}
/**
* setup the public key
*/
public function setupPubKey()
{
if(is_resource($this->_pubKey)){
return true;
}
$file = $this->_keyPath . DIRECTORY_SEPARATOR . 'pub.key';
$puk = file_get_contents($file);
$this->_pubKey = openssl_pkey_get_public($puk);
return true;
}
/**
* encrypt with the private key
*/
public function privEncrypt($data)
{
if(!is_string($data)){
return null;
}
$this->setupPrivKey();
$r = openssl_private_encrypt($data, $encrypted, $this->_privKey);
if($r){
return base64_encode($encrypted);
}
return null;
}
/**
* decrypt with the private key
*/
public function privDecrypt($encrypted)
{
if(!is_string($encrypted)){
return null;
}
$this->setupPrivKey();
$encrypted = base64_decode($encrypted);
$r = openssl_private_decrypt($encrypted, $decrypted, $this->_privKey);
if($r){
return $decrypted;
}
return null;
}
/**
* encrypt with public key
*/
public function pubEncrypt($data)
{
if(!is_string($data)){
return null;
}
$this->setupPubKey();
$r = openssl_public_encrypt($data, $encrypted, $this->_pubKey);
if($r){
return base64_encode($encrypted);
}
return null;
}
/**
* decrypt with the public key
*/
public function pubDecrypt($crypted)
{
if(!is_string($crypted)){
return null;
}
$this->setupPubKey();
$crypted = base64_decode($crypted);
$r = openssl_public_decrypt($crypted, $decrypted, $this->_pubKey);
if($r){
return $decrypted;
}
return null;
}
public function __destruct()
{
@ fclose($this->_privKey);
@ fclose($this->_pubKey);
}
}
//以下是一个简单的测试demo,如果不需要请删除
$rsa = new Rsa('ssl-key');
//私钥加密,公钥解密
echo 'source:我是老鳖
';
$pre = $rsa->privEncrypt('我是老鳖');
echo 'private encrypted:
' . $pre . '
';
$pud = $rsa->pubDecrypt($pre);
echo 'public decrypted:' . $pud . '
';
//公钥加密,私钥解密
echo 'source:干IT的
';
$pue = $rsa->pubEncrypt('干IT的');
echo 'public encrypt:
' . $pue . '
';
$prd = $rsa->privDecrypt($pue);
echo 'private decrypt:' . $prd;
?>
需要注意的是apache要支持OpenSSL

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Nginx ialah perisian yang digunakan secara meluas dalam pelayan web, pengimbang beban, proksi terbalik dan cache. Semasa penghantaran rangkaian, penyulitan data dan keselamatan telah mendapat perhatian yang semakin meningkat. Untuk meningkatkan keselamatan komunikasi, perpustakaan OpenSSL boleh digunakan untuk melaksanakan protokol SSL/TLS untuk melindungi penghantaran data sensitif. Artikel ini akan menerangkan cara menggunakan Nginx dan perpustakaan OpenSSL untuk mencapai komunikasi yang lebih selamat. Pasang dan konfigurasikan pustaka OpenSSL Mula-mula, anda perlu memasang pustaka OpenSSL pada pelayan. boleh buat

Semalam saya melihat artikel Bahasa Inggeris [1] yang menunjukkan cara menggunakan Python untuk melaksanakan algoritma RSA Logik kod adalah sama seperti artikel sebelumnya Memahami Algoritma RSA boleh membaca artikel Memahami Algoritma RSA, yang menghadapi Apa itu RSA, prinsip matematik RSA diterangkan, dan contoh mudah boleh dikatakan bahawa ini adalah artikel paling mudah untuk memahami RSA di Quanzhihu (ini datang dari komen pembaca). Saya menjalankan kod yang disediakan dalam bahasa Inggeris dan mendapati ia tidak boleh menyulitkan bahasa Cina, jadi saya mengubah suai fungsi penyulitan dan penyahsulitan untuk menyokong penyulitan dan penyahsulitan bahasa Cina. Artikel hari ini akan berkongsi cara menggunakan Python untuk melaksanakan penyulitan RSA dan proses penyahsulitan untuk membantu anda mewujudkan

Cara menggunakan PHP dan GMP untuk melaksanakan algoritma penyulitan dan penyahsulitan RSA untuk integer besar Algoritma penyulitan RSA ialah algoritma penyulitan asimetri yang digunakan secara meluas dalam bidang keselamatan data. Ia melaksanakan proses penyulitan kunci awam dan penyahsulitan kunci persendirian berdasarkan dua nombor perdana yang sangat besar dan beberapa operasi matematik mudah. Dalam bahasa PHP, pengiraan integer besar boleh direalisasikan melalui perpustakaan GMP (GNUMultiplePrecision), dan fungsi penyulitan dan penyahsulitan boleh direalisasikan dengan menggabungkan algoritma RSA. Artikel ini akan memperkenalkan cara menggunakan perpustakaan PHP dan GMP untuk

Pengenalan kepada cara menggunakan OpenSSL untuk menjana sijil SSL MySQL: MySQL ialah sistem pangkalan data hubungan yang digunakan secara meluas Ia adalah sangat penting untuk menggunakan protokol SSL (SecureSocketsLayer) untuk komunikasi yang disulitkan dalam persekitaran pengeluaran sebenar. Artikel ini akan memperkenalkan cara menggunakan alat OpenSSL untuk menjana sijil SSL MySQL dan memberikan contoh kod yang sepadan. Langkah: Pasang OpenSSL: Pertama, pastikan anda telah memasang OpenSSL pada komputer anda

Sebagai sistem pengendalian sumber terbuka, LINUX mempunyai pelbagai aplikasi dan kumpulan pengguna CentOS7 adalah versi cawangan LINUX Ia dibina berdasarkan kod sumber Red Hat Enterprise Linux (RHEL) dan mempunyai tahap kestabilan dan keselamatan yang tinggi . Ia boleh dipasang dan dikonfigurasikan pada CentOS7 OpenBLAS dan OpenSSL adalah keperluan biasa bagi banyak pembangun dan pentadbir sistem. OpenBLAS ialah perpustakaan matematik berprestasi tinggi sumber terbuka berdasarkan antara muka BLAS (BasicLinearAlgebraSubprograms).

Cara menggunakan PHP dan GMP untuk melaksanakan algoritma penyulitan dan penyahsulitan RSA Algoritma penyulitan RSA ialah algoritma penyulitan asimetri yang digunakan secara meluas dalam bidang keselamatan maklumat. Dalam aplikasi praktikal, selalunya perlu menggunakan bahasa pengaturcaraan untuk melaksanakan algoritma penyulitan dan penyahsulitan RSA. PHP ialah bahasa skrip sebelah pelayan yang biasa digunakan dan GMP (GNUMultiplePrecision) ialah perpustakaan pengiraan matematik berketepatan tinggi yang boleh membantu kami melaksanakan operasi nombor besar yang diperlukan dalam algoritma RSA. Artikel ini akan memperkenalkan cara menggunakan PHP dan GMP

Bagaimana untuk menulis algoritma penyulitan RSA menggunakan Python? Pengenalan: RSA ialah algoritma penyulitan asimetri yang digunakan secara meluas dalam bidang keselamatan maklumat. Dalam komunikasi moden, algoritma penyulitan RSA biasanya digunakan untuk menyulitkan dan menyahsulit data sensitif. Artikel ini akan memperkenalkan cara menggunakan Python untuk menulis algoritma penyulitan RSA dan memberikan contoh kod khusus. Pasang perpustakaan Python Sebelum anda mula menulis algoritma penyulitan RSA, anda perlu memasang pustaka penyulitan Python. Ia boleh dipasang menggunakan arahan berikut: pipinstallrsa generate

Teknologi penyulitan asimetri RSA ialah salah satu kaedah penyulitan yang 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 algoritma RSA? Algoritma RSA ialah teknologi penyulitan asimetri Ia 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. Strim disulitkan algoritma RSA
