校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > 詳解PHP使用非對稱加密算法RSA

詳解PHP使用非對稱加密算法RSA

熱門標簽:安裝電銷外呼系統 福州人工外呼系統哪家強 注冊400電話申請 地圖標注平臺怎么給錢注冊 釘釘打卡地圖標注 百度商鋪地圖標注 衡水外呼系統平臺 常州地圖標注服務商 新河科技智能外呼系統怎么樣

加密的類型

在日常設計及開發中,為確保數據傳輸和數據存儲的安全,可通過特定的算法,將數據明文加密成復雜的密文。目前主流加密手段大致可分為單向加密和雙向加密。

單向加密:通過對數據進行摘要計算生成密文,密文不可逆推還原。算法代表:Base64,MD5,SHA;

雙向加密:與單向加密相反,可以把密文逆推還原成明文,雙向加密又分為對稱加密和非對稱加密。

對稱加密:指數據使用者必須擁有相同的密鑰才可以進行加密解密,就像彼此約定的一串暗號。算法代表:DES,3DES,AES,IDEA,RC4,RC5;

非對稱加密:相對對稱加密而言,無需擁有同一組密鑰,非對稱加密是一種“信息公開的密鑰交換協議”。非對稱加密需要公開密鑰和私有密鑰兩組密鑰,公開密鑰和私有密鑰是配對起來的,也就是說使用公開密鑰進行數據加密,只有對應的私有密鑰才能解密。這兩個密鑰是數學相關,用某用戶密鑰加密后的密文,只能使用該用戶的加密密鑰才能解密。如果知道了其中一個,并不能計算出另外一個。因此如果公開了一對密鑰中的一個,并不會危害到另外一個密鑰性質。這里把公開的密鑰為公鑰,不公開的密鑰為私鑰。算法代表:RSA,DSA。

以前一直對客戶端傳給服務器的信息加密這一塊一臉懵,如果app里面的用戶登錄信息被抓包拿到了,大寫著 username:root,password:123456,  那不是很尷尬。

偶然做版權輸入的時候遇到了rsa,在支付寶支付的時候也接觸過,當時不知道這是啥子,現在才知道。

他能保證,客戶端給出的信息,只有擁有私鑰的服務器才能看,其他人看的都是亂碼。

非對稱加密算法

需要兩個密鑰:公開密鑰(publickey)和私有密鑰(privatekey)。公開密鑰與私有密鑰是一對,如果用公開密鑰對數據進行加密,只有用對應的私有密鑰才能解密;如果用私有密鑰對數據進行加密,那么只有用對應的公開密鑰才能解密。因為加密和解密使用的是兩個不同的密鑰,所以這種算法叫作非對稱加密算法。

注意以上的一個點,公鑰加密的數據,只有對應的私鑰才能解密

在日常使用中是醬紫的:將私鑰private_key.pem用在服務器端,公鑰發放給android跟ios等前端

客戶端用公鑰加密過后,數據只能被擁有唯一私鑰的服務器看懂。

具體實現

1、加密解密的第一步

生成公鑰、私鑰對,私鑰加密的內容能通過公鑰解密(反過來亦可以)

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

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私鑰轉換為 pkcs8格式

第三條生成RSA公鑰 rsa_public_key.pem

上面幾個就可以看出:通過私鑰能生成對應的公鑰

也有一些網站提供生成rsa公鑰私鑰的服務:http://www.bm8.com.cn/webtool/rsa/

2、PHP的加密解密類庫

?php
 
 
class Rsa {
 
    /**     
     * 獲取私鑰     
     * @return bool|resource     
     */    
    private static function getPrivateKey() 
    {        
        $abs_path = dirname(__FILE__) . '/rsa_private_key.pem';
        $content = file_get_contents($abs_path);    
        return openssl_pkey_get_private($content);    
    }    
 
    /**     
     * 獲取公鑰     
     * @return bool|resource     
     */    
    private static function getPublicKey()
    {   
        $abs_path = dirname(__FILE__) . '/rsa_public_key.pem';
        $content = file_get_contents($abs_path);    
        return openssl_pkey_get_public($content);     
    }
 
    /**     
     * 私鑰加密     
     * @param string $data     
     * @return null|string     
     */    
    public static function privEncrypt($data = '')    
    {        
        if (!is_string($data)) {            
            return null;       
        }        
        return openssl_private_encrypt($data,$encrypted,self::getPrivateKey()) ? base64_encode($encrypted) : null;    
    }    
 
    /**     
     * 公鑰加密     
     * @param string $data     
     * @return null|string     
     */    
    public static function publicEncrypt($data = '')   
    {        
        if (!is_string($data)) {            
            return null;        
        }        
        return openssl_public_encrypt($data,$encrypted,self::getPublicKey()) ? base64_encode($encrypted) : null;    
    }    
 
    /**     
     * 私鑰解密     
     * @param string $encrypted     
     * @return null     
     */    
    public static function privDecrypt($encrypted = '')    
    {        
        if (!is_string($encrypted)) {            
            return null;        
        }        
        return (openssl_private_decrypt(base64_decode($encrypted), $decrypted, self::getPrivateKey())) ? $decrypted : null;    
    }    
 
    /**     
     * 公鑰解密     
     * @param string $encrypted     
     * @return null     
     */    
    public static function publicDecrypt($encrypted = '')    
    {        
        if (!is_string($encrypted)) {            
            return null;        
        }        
    return (openssl_public_decrypt(base64_decode($encrypted), $decrypted, self::getPublicKey())) ? $decrypted : null;    
    }
}

調用demo

?php
require_once "Rsa.php";
$rsa = new Rsa();
$data['name'] = 'Tom';
$data['age']  = '20';
$privEncrypt = $rsa->privEncrypt(json_encode($data));
echo '私鑰加密后:'.$privEncrypt.'br>';
 
$publicDecrypt = $rsa->publicDecrypt($privEncrypt);
echo '公鑰解密后:'.$publicDecrypt.'br>';
 
$publicEncrypt = $rsa->publicEncrypt(json_encode($data));
echo '公鑰加密后:'.$publicEncrypt.'br>';
 
$privDecrypt = $rsa->privDecrypt($publicEncrypt);
echo '私鑰解密后:'.$privDecrypt.'br>';

代碼截圖實例:

以上就是PHP使用非對稱加密算法RSA的詳細內容,更多關于PHP使用RSA的資料請關注腳本之家其它相關文章!

您可能感興趣的文章:
  • 詳解各種PHP函數漏洞
  • 如何使用SublimeText3配置 PHP IDE環境
  • PHPStorm+Xdebug進行emote Debug時無法進入斷點問題排查
  • php中foreach遍歷類對象的總結
  • php-fpm報502問題的解決辦法
  • PHP實現創建以太坊錢包轉賬等功能
  • 如何使用php生成zip壓縮包
  • php常見的網絡攻擊及防御方法
  • PHP7下安裝并使用xhprof性能分析工具
  • PHP遠程調用以及RPC框架
  • PHP代碼加密和擴展解密實戰
  • 再談PHP未來之路

標簽:鶴崗 鷹潭 克拉瑪依 白城 唐山 六安 柳州 遼陽

巨人網絡通訊聲明:本文標題《詳解PHP使用非對稱加密算法RSA》,本文關鍵詞  詳解,PHP,使用,非對稱,加密,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《詳解PHP使用非對稱加密算法RSA》相關的同類信息!
  • 本頁收集關于詳解PHP使用非對稱加密算法RSA的相關信息資訊供網民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    97精品电影院| 一区二区三区免费| 国产精品美女一区二区| 国产视频一区二区在线| 亚洲激情av在线| 国产精品乡下勾搭老头1| 91黄色在线观看| 精品91自产拍在线观看一区| 伊人一区二区三区| 国产精品18久久久久久久久| 欧美精品在线一区二区| 18成人在线观看| 成人亚洲一区二区一| 一本到不卡精品视频在线观看| 日韩欧美精品在线| 午夜精品久久一牛影视| 国产成人午夜视频| 欧美videofree性高清杂交| 成人欧美一区二区三区白人 | 亚洲人亚洲人成电影网站色| 日本视频免费一区| 日本乱人伦aⅴ精品| 精品国产乱码久久久久久免费| 首页国产欧美日韩丝袜| 精品国产一区二区三区忘忧草| 精品国产免费久久| 日韩二区在线观看| 在线观看日韩国产| 国产精品网站在线| 激情丁香综合五月| 欧美国产一区二区在线观看| 国产999精品久久久久久| 国产婷婷色一区二区三区| 蜜臀va亚洲va欧美va天堂| 欧美丰满美乳xxx高潮www| 日本中文字幕一区二区有限公司| 欧美日韩中文国产| 首页亚洲欧美制服丝腿| 91九色02白丝porn| 日韩不卡免费视频| 久久久久国产免费免费 | 极品销魂美女一区二区三区| 精品欧美一区二区在线观看 | 国产精品18久久久久久久久久久久| 精品剧情v国产在线观看在线| 国产一区二区三区四区五区美女| 欧美xxxxx牲另类人与| 国产aⅴ综合色| 亚洲综合偷拍欧美一区色| 欧美男生操女生| 国产不卡在线视频| 亚洲男人天堂一区| 91香蕉视频mp4| 日韩av一区二区三区四区| 国产日产欧美一区二区视频| 97超碰欧美中文字幕| 一区二区成人在线| 337p粉嫩大胆色噜噜噜噜亚洲| 在线看国产一区二区| 九色|91porny| 蜜桃一区二区三区在线| 亚洲bt欧美bt精品777| 一区二区三区免费| 国产精品私房写真福利视频| 日韩精品中午字幕| 91麻豆精品国产91久久久使用方法 | 欧洲精品一区二区| 91原创在线视频| 91高清视频免费看| 波多野洁衣一区| 成人免费高清在线| 成人性视频网站| 成人国产电影网| 99国产精品久久| 91欧美激情一区二区三区成人| 99re热视频精品| 色噜噜狠狠色综合欧洲selulu| 色呦呦国产精品| 欧美日韩国产首页| 日韩欧美一区中文| 国产午夜精品一区二区 | 亚洲福中文字幕伊人影院| 亚洲精品一二三| 亚洲一区二区三区视频在线| 婷婷亚洲久悠悠色悠在线播放| 亚洲成人av电影在线| 天天综合天天综合色| 精品一区二区在线看| 成人的网站免费观看| 色婷婷国产精品| 欧美欧美欧美欧美首页| 久久免费看少妇高潮| 亚洲精品美腿丝袜| 蜜臀精品久久久久久蜜臀| 国产在线不卡一区| a级高清视频欧美日韩| 欧美日韩精品一区二区在线播放| 日韩一区二区免费在线电影| 久久免费电影网| 午夜久久久久久电影| 成人禁用看黄a在线| 制服丝袜在线91| 亚洲日本电影在线| 国产精品99久久久久久宅男| 欧美性受极品xxxx喷水| 久久精品在线免费观看| 性做久久久久久久久| 国产成人小视频| 日韩一区二区视频在线观看| 亚洲精选免费视频| 国产成人精品aa毛片| 欧美一级二级在线观看| 一区二区三区在线免费观看 | 日韩美女主播在线视频一区二区三区 | 国产午夜亚洲精品午夜鲁丝片 | 在线播放国产精品二区一二区四区| 久久久久国产精品免费免费搜索| 日韩高清国产一区在线| 在线观看国产精品网站| 国产精品国产a级| 国产在线乱码一区二区三区| 91精品国产色综合久久不卡电影| 亚洲综合免费观看高清完整版在线 | 成人一区二区三区中文字幕| 欧美大片拔萝卜| 精品亚洲欧美一区| 欧美一区二区黄色| 五月天亚洲精品| 欧美丰满少妇xxxbbb| 日韩精品1区2区3区| 欧美一区二区三区在| 美女视频黄频大全不卡视频在线播放| 91精品国产综合久久精品| ●精品国产综合乱码久久久久| www.久久精品| 亚洲日本在线a| 欧美性感一类影片在线播放| 亚洲一区二区三区四区五区中文| 欧美亚洲愉拍一区二区| 亚洲图片自拍偷拍| 日韩视频在线一区二区| 国产精品伊人色| 亚洲国产精品t66y| 91视频在线观看免费| 亚洲一区在线电影| 欧美va亚洲va| 91小视频免费观看| 天天av天天翘天天综合网色鬼国产| 欧美精品v日韩精品v韩国精品v| 精品一区二区三区免费播放| 国产精品久久久久婷婷| 欧美日韩一区二区三区四区| 美腿丝袜在线亚洲一区| 国产欧美一区二区精品忘忧草| 色欧美日韩亚洲| 国产精品中文欧美| 亚洲18女电影在线观看| 欧美精品一区二区三区蜜臀| 色综合久久久久久久| 精品亚洲porn| 亚洲成人tv网| 亚洲视频每日更新| 欧美精品一区二区三区在线播放 | 成人18精品视频| 看国产成人h片视频| 国产精品嫩草影院av蜜臀| 日韩精品中文字幕一区二区三区 | www.日韩av| 国内精品免费**视频| 一区二区三区四区蜜桃| 国产精品你懂的在线| 国产亚洲欧洲一区高清在线观看| 91.com视频| 欧美精品久久天天躁| 成人av片在线观看| 国产成人精品一区二区三区四区| 秋霞午夜鲁丝一区二区老狼| 亚洲国产精品久久久久秋霞影院 | 国产精品成人在线观看| 精品国产乱码久久久久久夜甘婷婷 | 日韩视频在线观看一区二区| 欧美日韩国产高清一区二区三区| 成人福利视频网站| 精品一区二区综合| 国产精品资源站在线| 国产一区欧美日韩| 国产精品中文欧美| 成人av网站免费观看| 成人av免费在线观看| 99久久久精品| 精品视频一区二区三区免费| 欧美日韩久久一区| 日韩免费视频线观看| 国产夜色精品一区二区av| 2019国产精品| 亚洲精品少妇30p| 天堂va蜜桃一区二区三区漫画版| 青草国产精品久久久久久| 国产精品一区二区久久精品爱涩| 国产高清一区日本|