最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

PHP rsa加密解密使用方法

 更新時間:2015年04月27日 10:00:54   投稿:junjie  
這篇文章主要介紹了PHP rsa加密解密使用方法,本文講解了生成公鑰、私鑰及PHP中使用生成的公鑰、私鑰進行加密解密實例,需要的朋友可以參考下

php服務(wù)端與客戶端交互、提供開放api時,通常需要對敏感的部分api數(shù)據(jù)傳輸進行數(shù)據(jù)加密,這時候rsa非對稱加密就能派上用處了,下面通過一個例子來說明如何用php來實現(xiàn)數(shù)據(jù)的加密解密

1、加密解密的第一步是生成公鑰、私鑰對,私鑰加密的內(nèi)容能通過公鑰解密(反過來亦可以)

下載開源RSA密鑰生成工具openssl(通常Linux系統(tǒng)都自帶該程序),解壓縮至獨立的文件夾,進入其中的bin目錄,執(zhí)行以下命令:

openssl genrsa -out rsa_private_key.pem 1024
openssl pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt -out private_key.pem
openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem


第一條命令生成原始 RSA私鑰文件 rsa_private_key.pem,第二條命令將原始 RSA私鑰轉(zhuǎn)換為 pkcs8格式,第三條生成RSA公鑰 rsa_public_key.pem
從上面看出通過私鑰能生成對應(yīng)的公鑰,因此我們將私鑰private_key.pem用在服務(wù)器端,公鑰發(fā)放給android跟ios等前端

2、php中用生成的公鑰、私鑰進行加密解密,直接上代碼

<?php
$private_key = '-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQC3//sR2tXw0wrC2DySx8vNGlqt3Y7ldU9+LBLI6e1KS5lfc5jl
TGF7KBTSkCHBM3ouEHWqp1ZJ85iJe59aF5gIB2klBd6h4wrbbHA2XE1sq21ykja/
Gqx7/IRia3zQfxGv/qEkyGOx+XALVoOlZqDwh76o2n1vP1D+tD3amHsK7QIDAQAB
AoGBAKH14bMitESqD4PYwODWmy7rrrvyFPEnJJTECLjvKB7IkrVxVDkp1XiJnGKH
2h5syHQ5qslPSGYJ1M/XkDnGINwaLVHVD3BoKKgKg1bZn7ao5pXT+herqxaVwWs6
ga63yVSIC8jcODxiuvxJnUMQRLaqoF6aUb/2VWc2T5MDmxLhAkEA3pwGpvXgLiWL
3h7QLYZLrLrbFRuRN4CYl4UYaAKokkAvZly04Glle8ycgOc2DzL4eiL4l/+x/gaq
deJU/cHLRQJBANOZY0mEoVkwhU4bScSdnfM6usQowYBEwHYYh/OTv1a3SqcCE1f+
qbAclCqeNiHajCcDmgYJ53LfIgyv0wCS54kCQAXaPkaHclRkQlAdqUV5IWYyJ25f
oiq+Y8SgCCs73qixrU1YpJy9yKA/meG9smsl4Oh9IOIGI+zUygh9YdSmEq0CQQC2
4G3IP2G3lNDRdZIm5NZ7PfnmyRabxk/UgVUWdk47IwTZHFkdhxKfC8QepUhBsAHL
QjifGXY4eJKUBm3FpDGJAkAFwUxYssiJjvrHwnHFbg0rFkvvY63OSmnRxiL4X6EY
yI9lblCsyfpl25l7l5zmJrAHn45zAiOoBrWqpM5edu7c
-----END RSA PRIVATE KEY-----';

$public_key = '-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC3//sR2tXw0wrC2DySx8vNGlqt
3Y7ldU9+LBLI6e1KS5lfc5jlTGF7KBTSkCHBM3ouEHWqp1ZJ85iJe59aF5gIB2kl
Bd6h4wrbbHA2XE1sq21ykja/Gqx7/IRia3zQfxGv/qEkyGOx+XALVoOlZqDwh76o
2n1vP1D+tD3amHsK7QIDAQAB
-----END PUBLIC KEY-----';

//echo $private_key;
$pi_key = openssl_pkey_get_private($private_key);//這個函數(shù)可用來判斷私鑰是否是可用的,可用返回資源id Resource id
$pu_key = openssl_pkey_get_public($public_key);//這個函數(shù)可用來判斷公鑰是否是可用的
print_r($pi_key);echo "\n";
print_r($pu_key);echo "\n";


$data = "aassssasssddd";//原始數(shù)據(jù)
$encrypted = ""; 
$decrypted = ""; 

echo "source data:",$data,"\n";

echo "private key encrypt:\n";

openssl_private_encrypt($data,$encrypted,$pi_key);//私鑰加密
$encrypted = base64_encode($encrypted);//加密后的內(nèi)容通常含有特殊字符,需要編碼轉(zhuǎn)換下,在網(wǎng)絡(luò)間通過url傳輸時要注意base64編碼是否是url安全的
echo $encrypted,"\n";

echo "public key decrypt:\n";

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";

echo "private key decrypt:\n";
openssl_private_decrypt(base64_decode($encrypted),$decrypted,$pi_key);//私鑰解密
echo $decrypted,"\n";

相關(guān)文章

  • 主流PHP框架的優(yōu)缺點對比分析

    主流PHP框架的優(yōu)缺點對比分析

    這篇文章主要介紹了幾款今年比較熱門的主流PHP框架的優(yōu)缺點對比分析,非常的簡單實用,有需要的小伙伴參考下。
    2014-12-12
  • php添加數(shù)據(jù)到xml文件的簡單例子

    php添加數(shù)據(jù)到xml文件的簡單例子

    下面小編就為大家?guī)硪黄猵hp添加數(shù)據(jù)到xml文件的簡單例子。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-09-09
  • laravel 解決Eloquent ORM的save方法無法插入數(shù)據(jù)的問題

    laravel 解決Eloquent ORM的save方法無法插入數(shù)據(jù)的問題

    今天小編就為大家分享一篇laravel 解決Eloquent ORM的save方法無法插入數(shù)據(jù)的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-10-10
  • php微信公眾號開發(fā)之微信企業(yè)付款給個人

    php微信公眾號開發(fā)之微信企業(yè)付款給個人

    這篇文章主要為大家詳細介紹了php微信公眾號開發(fā)之微信企業(yè)付款給個人,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-10-10
  • Laravel框架創(chuàng)建路由的方法詳解

    Laravel框架創(chuàng)建路由的方法詳解

    這篇文章主要介紹了Laravel框架創(chuàng)建路由的方法,包括基礎(chǔ)路由、多請求路由、路由參數(shù)、輸出視圖等相關(guān)原理與使用方法,需要的朋友可以參考下
    2019-09-09
  • PHP自動補全表單的兩種方法

    PHP自動補全表單的兩種方法

    這篇文章主要介紹了PHP自動補全表單的兩種方法,第一種從數(shù)據(jù)庫中檢索之后補全,第二種郵箱等純前端的補全,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-03-03
  • 一個簡單的PHP驗證碼實現(xiàn)代碼

    一個簡單的PHP驗證碼實現(xiàn)代碼

    為提高網(wǎng)站安全性,登陸采用驗證碼是必不可少的。一款簡單精致的PHP驗證碼應(yīng)運而生!此驗證碼簡潔美觀,源碼簡單,可以自定義修改樣式,是一款不錯的驗證碼。
    2014-05-05
  • php之header的不同用法總結(jié)(實例講解)

    php之header的不同用法總結(jié)(實例講解)

    下面小編就為大家分享一篇php之header的不同用法總結(jié)(實例講解),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-11-11
  • PHP微信開發(fā)之二維碼生成類

    PHP微信開發(fā)之二維碼生成類

    這篇文章主要介紹了PHP微信開發(fā)之二維碼生成類,本文使用微信接口實現(xiàn)二維碼的生成,并直接給出示例代碼,需要的朋友可以參考下
    2015-06-06
  • 在WordPress的文章編輯器中設(shè)置默認內(nèi)容的方法

    在WordPress的文章編輯器中設(shè)置默認內(nèi)容的方法

    這篇文章主要介紹了在WordPress的文章編輯器中設(shè)置默認內(nèi)容的方法,包括給不同類型的文章設(shè)置不同內(nèi)容的具體方法,需要的朋友可以參考下
    2015-12-12

最新評論

桐城市| 台东县| 宝坻区| 和田市| 汉中市| 呼玛县| 敦化市| 海淀区| 鹿泉市| 永德县| 苏州市| 和林格尔县| 泗阳县| 乐至县| 福州市| 苍山县| 宁津县| 景泰县| 那曲县| 社旗县| 湟中县| 新丰县| 临猗县| 新蔡县| 分宜县| 亳州市| 资溪县| SHOW| 嘉禾县| 顺义区| 阿合奇县| 泾阳县| 石景山区| 炎陵县| 红桥区| 嘉峪关市| 鄄城县| 庆云县| 澄迈县| 商南县| 台北县|