Home > php教程 > php手册 > 使用openssl实现rsa非对称加密算法示例

使用openssl实现rsa非对称加密算法示例

WBOY
Release: 2016-06-13 09:44:32
Original
933 people have browsed it

 这篇文章主要介绍了使用openssl实现rsa非对称加密算法的示例,大家参考使用吧

 代码如下: _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  
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Recommendations
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template