第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

封裝php的非對(duì)稱(chēng)加密RSA

標(biāo)簽:
PHP

<?php

/**

* 使用openssl实现非对称加密

*

* @author

*/

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()

       {

               $configargs = array('digest_alg' => 'sha1',

                   'private_key_type' => OPENSSL_KEYTYPE_RSA,

                   'private_key_bits' => 512,

                   "config" => "E:/xampp/php/extras/openssl/openssl.cnf"

               );

               $r = openssl_pkey_new($configargs);

               openssl_pkey_export($r, $privKey,null,$configargs);

               file_put_contents($this->_keyPath . DIRECTORY_SEPARATOR . 'priv.key', $privKey);

               $this->_privKey = openssl_pkey_get_private($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=======================

//以下是一个简单的测试demo,如果不需要请删除

$rsa = new Rsa('ssl-key');

$rsa->createKey(); //创建一对密钥,如果密钥对已经存在,不需调用

//私钥加密,公钥解密

echo 'source:就将计就计<br />';

$pre = $rsa->privEncrypt('就将计就计');

echo 'private encrypted:<br />' . $pre . '<br />';


$pud = $rsa->pubDecrypt($pre);

echo 'public decrypted:' . $pud . '<br />';


//公钥加密,私钥解密

echo 'source:干反方向<br />';

$pue = $rsa->pubEncrypt('干反方向');

echo 'public encrypt:<br />' . $pue . '<br />';


$prd = $rsa->privDecrypt($pue);

echo 'private decrypt:' . $prd;

//========================demo======================


//特别注意:没有openssl.cnf配置,在创建 public/private key 的时候会出现类似以下的问题

//Warning: openssl_pkey_export() [function.openssl-pkey-export]: cannot get key from parameter,

//或者openssl_pkey_export里的私钥生成不了。

點(diǎn)擊查看更多內(nèi)容
1人點(diǎn)贊

若覺(jué)得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說(shuō)多少就多少
贊賞金額會(huì)直接到老師賬戶(hù)
支付方式
打開(kāi)微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專(zhuān)欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消