php基于openssl的rsa加密解密示例
本文實(shí)例講述了php基于openssl的rsa加密解密。分享給大家供大家參考,具體如下:
<?php $config = array( //"config" =>"D:/phpserver/Lighttpd/openssl.cnf", //'config' =>'D:/phpStudy/Lighttpd/OpenSSL.cnf', 'private_key_bits' => 1024, // Size of Key. 'private_key_type' => OPENSSL_KEYTYPE_RSA ); //$res = openssl_pkey_new(); $res = openssl_pkey_new($config); // Get private key // openssl_pkey_export($res, $privkey, "PassPhrase number 1" ); openssl_pkey_export($res, $privkey); var_dump($privkey); // Get public key $pubkey=openssl_pkey_get_details($res); // echo "------------><br />"; // print_r($pubkey["rsa"]); // $bin_str=$pubkey["rsa"]["n"]; // print_r($bin_str); // echo "<br />"; // //echo $bin_hex_str = pack("H*" , bin2hex($bin_str)); // echo $bin_hex_str = bin2hex($bin_str); // echo "<br />------------<<br />"; $pubkey=$pubkey["key"]; // var_dump($privkey); // var_dump($pubkey); echo $privkey."<br /><br />"; echo $pubkey."<br /><br />"; ?>
<?php $private_key = '-----BEGIN RSA PRIVATE KEY----- MIICXQIBAAKBgQDNSQ4AmPZE01MpEO9dabRDsS0XwxKekEFUoWJneFG+NA6P52Js ISw79QYNfQwM7akIaPpzU0+kkWjTSXiDqFUv5y2vaA3W2Tre5N51uCwUK6/LfzHX Bg0d+Bnlzy6Kb6bpgPgvbhAkNbvjbCS0V9h4v3WUTLR9QauJ05Q8qe70sQIDAQAB AoGAb/9aZ1MMkNImfbIilXk1AvVn353qy51yNyTxFfhbyISIKVSYqtuSUYfFbJh7 eZYz8UWs1jxuqB847IUZ/eJZzpVev480Tv9YejN0DhJ4Yw6y/kpJWo/9kEcET6Tk vatXh+wgmieszkxe0kUvk41GPV7a4GWWQj6P4vjx+qktaNECQQDuo7ENW10dZXLG YNKqUhgkdi9NPjRlHCgZ4RW0uoRqUsggqNVkaqpY8BaJOkkXWiQ0aVTPBiwo8k0+ S50rGNYNAkEA3DgxY9OwRc65VqS/UxV28pyLe2gy0XSVwA97SVNvYJJ58iNGEvYs vEZ3GrTNAZpbPKcruCS6NiDK761Ot5A0NQJAOsRO1pY4QQP5lsbDOjRLQ7djAKef 6YJckbrvSHliIHjQVdKd8kOePZaqRhL3auvE3K9Ptkez2kWJJh0i0DkmhQJBAMCm F+7wnWA0PEbj0MvqFyiechb/TJWXm/lskbnP17tv6GY/HWoxGWmLa15dlIo2cmJZ DBIHby8y+NU7k4VaDZECQQCO018O5TJWl+O+bWyzV1eR603YP+JVjiSKUPtuyzVS NIz+ClwspGmdUwPWlLqr5JfKm+OfpaLIepfJinsCgwpP -----END RSA PRIVATE KEY-----'; //$private_key ='-----BEGIN RSA PRIVATE KEY----- //MIICXAIBAAKBgQDVFOcE2nEBi+4FYvS36j1ShHHvusR0dXXe9NzAA/biH6NODywH //cQo2Lyco6oSvY+cSsPewjjyatRCtq/Ri6c/am64CJu+HM1lZH1Gh05C2KVJ2dveX //gcdsz+/XPHDxYKAq/hW9S1NeYr2x4eJdpYNYucLn8XWgeLRnlJUnBl/saQIDAQAB //AoGAK2oz28hKKB+DorNT2zktv2de85JhPr1EA+ZuJ+1m2xHJKzlqJiYBB6M53ltS //J446YZOPE/kXHgpwWIJlq9Wp1KiZPEfoRWzz1wmuj8koq95vcxBeuyjX4ez4Dio6 //Vmr9BABFuoAh0GAq8kTJOz0DURCEcwv+iI7ILaNoRjPFWuUCQQDveqRLE2/N8NIy //P7YVnniAiaSL/e+XYQXCMIDsdEdqZNRjhjfDoBqpV/tGjnuAn9zBVHNNLbLni5nf //2nqgrh5jAkEA48gQmBO9koOnvO//Q581JSBKfga4i7DetQ80OD4kYt6fwezkaeHX //k64sjmpfD/Ys2heKFhyNDO/k0NsUxGlNwwJBAKPx7/u9qLLyBNSFrWALhy9oC5AT //Hi0iLNEOZ5R43lNGB+jCf/aa6uW357wb2wzpZDWuXOkfOfUuKv+HEKBj00UCQCxd //woWsiqcoB5rwcBrevr49fOTxMC7dQ3Omw3gU+odbb2iZWKAbAh9ctIcExwFX5MKS //BS5rXzne3AWmNnRPQnsCQDdOCBxkF5YctHqlmEETfKodVZG69COZGykdlenOxK6g //qNNAT2y2mxInYGlPIJ+TfxxFIqesHdph4s/lw6T2ISY= //-----END RSA PRIVATE KEY-----'; $public_key = '-----BEGIN PUBLIC KEY----- MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDNSQ4AmPZE01MpEO9dabRDsS0X wxKekEFUoWJneFG+NA6P52JsISw79QYNfQwM7akIaPpzU0+kkWjTSXiDqFUv5y2v aA3W2Tre5N51uCwUK6/LfzHXBg0d+Bnlzy6Kb6bpgPgvbhAkNbvjbCS0V9h4v3WU TLR9QauJ05Q8qe70sQIDAQAB -----END PUBLIC KEY-----'; //$private_key=$privkey; //$public_key=$pubkey; $fp=fopen("private_key","w"); fwrite($fp,$private_key); fclose($fp); $fp=fopen("public_key","w"); fwrite($fp,$public_key); fclose($fp); //echo $private_key; $pi_key = openssl_pkey_get_private($private_key);//這個(gè)函數(shù)可用來判斷私鑰是否是可用的,可用返回資源id Resource id $pu_key = openssl_pkey_get_public($public_key);//這個(gè)函數(shù)可用來判斷公鑰是否是可用的 print_r($pi_key);echo "\n"; print_r($pu_key);echo "\n"; echo "<br />----------------------<br />"; $data = "woshizhu";//原始數(shù)據(jù) $encrypted = ""; $decrypted = ""; echo "source data:",$data,"<br />"; echo "private key encrypt:\n"; openssl_private_encrypt($data,$encrypted,$pi_key);//私鑰加密 $encrypted = base64_encode($encrypted);//加密后的內(nèi)容通常含有特殊字符,需要編碼轉(zhuǎn)換下,在網(wǎng)絡(luò)間通過url傳輸時(shí)要注意base64編碼是否是url安全的 echo "<br />----------私鑰加密------------<br />"; echo $encrypted,"<br />"; echo "<br />----------私鑰加密------------<br />"; echo "public key decrypt:\n"; $decrypted=""; openssl_public_decrypt(base64_decode($encrypted),$decrypted,$pu_key);//私鑰加密的內(nèi)容通過公鑰可用解密出來 echo $decrypted,"\n"; echo "---------------------------------------\n"; echo "public key encrypt:\n"; openssl_public_encrypt($data,$encrypted,$pu_key);//公鑰加密 $encrypted = base64_encode($encrypted); echo $encrypted,"\n"; $decrypted=""; //$encrypted="JBeapcp9iWWYJYElgqtrZxfxM4wVkCaSn/oJZ7NjfR23o76fdbxEXpf+PGWACw3PeTdObwL4108wR3ihKmy2iYkIExGjBYyvx2w9aHies8ZsOIP3LjiMHYTm93Rr8Sc5XxHWQc3Dhbq16JWHYZ2d+RrOpHd4x84GF3JXwivrGO4="; echo "private key decrypt:\n"; openssl_private_decrypt(base64_decode($encrypted),$decrypted,$pi_key);//私鑰解密 echo "--->:".$decrypted,"\n"; ?>
PS:關(guān)于加密解密感興趣的朋友還可以參考本站在線工具:
密碼安全性在線檢測:
http://tools.jb51.net/password/my_password_safe
高強(qiáng)度密碼生成器:
http://tools.jb51.net/password/CreateStrongPassword
MD5在線加密工具:
http://tools.jb51.net/password/CreateMD5Password
迅雷、快車、旋風(fēng)URL加密/解密工具:
http://tools.jb51.net/password/urlrethunder
在線散列/哈希算法加密工具:
http://tools.jb51.net/password/hash_encrypt
更多關(guān)于PHP相關(guān)內(nèi)容可查看本站專題:《php加密方法總結(jié)》、《PHP運(yùn)算與運(yùn)算符用法總結(jié)》、《PHP網(wǎng)絡(luò)編程技巧總結(jié)》、《PHP基本語法入門教程》、《php操作office文檔技巧總結(jié)(包括word,excel,access,ppt)》、《php日期與時(shí)間用法總結(jié)》、《php面向?qū)ο蟪绦蛟O(shè)計(jì)入門教程》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫操作入門教程》及《php常見數(shù)據(jù)庫操作技巧匯總》
希望本文所述對大家PHP程序設(shè)計(jì)有所幫助。
- 淺談PHP SHA1withRSA加密生成簽名及驗(yàn)簽
- PHP7.1實(shí)現(xiàn)的AES與RSA加密操作示例
- ThinkPHP實(shí)現(xiàn)的rsa非對稱加密類示例
- PHP封裝的非對稱加密RSA算法示例
- 基于PHP RSA密文過長加密解密 越過1024的解決方法
- PHP實(shí)現(xiàn)RSA加解密算法示例(生成密鑰位數(shù)為1024位的方法)
- PHP的RSA加密解密方法以及開發(fā)接口使用
- PHP檢測接口Traversable用法詳解
- PHP實(shí)現(xiàn)的MD5結(jié)合RSA簽名算法實(shí)例
- PHP實(shí)現(xiàn)RSA簽名生成訂單功能【支付寶示例】
- php rsa 加密,解密,簽名,驗(yàn)簽詳解
- PHP rsa加密解密使用方法
- php實(shí)現(xiàn)RSA加密類實(shí)例
- 詳解PHP使用非對稱加密算法RSA
相關(guān)文章
PHP動(dòng)態(tài)頁生成靜態(tài)頁的3種常用方法
這篇文章主要介紹了PHP動(dòng)態(tài)頁生成靜態(tài)頁的3種常用方法,通過三種不同的方法從不同的角度實(shí)現(xiàn)這一功能,有很好的參考借鑒價(jià)值,需要的朋友可以參考下2014-11-11防止用戶利用PHP代碼DOS造成用光網(wǎng)絡(luò)帶寬
一打開IIS,服務(wù)器的流出帶寬就用光-----就是說服務(wù)器不斷向別人發(fā)包,這個(gè)情況和受到DDOS攻擊是不同的,DDOS是不斷收到大量數(shù)據(jù)包.2011-03-03php中模擬POST傳遞數(shù)據(jù)的兩種方法分享
php中模擬POST傳遞數(shù)據(jù)的兩種方法分享,有時(shí)候需要模擬提交數(shù)據(jù)方便采集,需要的朋友可以參考下。2011-09-09PHP實(shí)現(xiàn)實(shí)時(shí)生成并下載超大數(shù)據(jù)量的EXCEL文件詳解
EXCEL文件的處理是我們在日常工作中經(jīng)常會(huì)遇到的,這篇文章主要給大家介紹了關(guān)于利用PHP如何實(shí)現(xiàn)實(shí)時(shí)生成并下載超大數(shù)據(jù)量的EXCEL文件,通過文中介紹的這個(gè)方法對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考借鑒,下面來一起看看吧。2017-10-10PHP正則+Snoopy抓取框架實(shí)現(xiàn)的抓取淘寶店信譽(yù)功能實(shí)例
這篇文章主要介紹了PHP正則+Snoopy抓取框架實(shí)現(xiàn)的抓取淘寶店信譽(yù)功能,結(jié)合實(shí)例形式分析了Snoopy框架的使用及正則匹配相關(guān)操作技巧,需要的朋友可以參考下2017-05-05php中$_SERVER[PHP_SELF] 和 $_SERVER[SCRIPT_NAME]之間的區(qū)別
php中$_SERVER[PHP_SELF] 和 $_SERVER[SCRIPT_NAME]之間的區(qū)別2009-09-09