| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179 | 
							- <?php
 
- namespace fast;
 
- /**
 
-  * RSA签名类
 
-  */
 
- class Rsa
 
- {
 
-     public $publicKey = '';
 
-     public $privateKey = '';
 
-     private $_privKey;
 
-     /**
 
-      * * private key
 
-      */
 
-     private $_pubKey;
 
-     /**
 
-      * * public key
 
-      */
 
-     private $_keyPath;
 
-     /**
 
-      * * the keys saving path
 
-      */
 
-     /**
 
-      * * the construtor,the param $path is the keys saving path
 
-      * @param string $publicKey  公钥
 
-      * @param string $privateKey 私钥
 
-      */
 
-     public function __construct($publicKey = null, $privateKey = null)
 
-     {
 
-         $this->setKey($publicKey, $privateKey);
 
-     }
 
-     /**
 
-      * 设置公钥和私钥
 
-      * @param string $publicKey  公钥
 
-      * @param string $privateKey 私钥
 
-      */
 
-     public function setKey($publicKey = null, $privateKey = null)
 
-     {
 
-         if (!is_null($publicKey)) {
 
-             $this->publicKey = $publicKey;
 
-         }
 
-         if (!is_null($privateKey)) {
 
-             $this->privateKey = $privateKey;
 
-         }
 
-     }
 
-     /**
 
-      * * setup the private key
 
-      */
 
-     private function setupPrivKey()
 
-     {
 
-         if (is_resource($this->_privKey)) {
 
-             return true;
 
-         }
 
-         $pem = chunk_split($this->privateKey, 64, "\n");
 
-         $pem = "-----BEGIN PRIVATE KEY-----\n" . $pem . "-----END PRIVATE KEY-----\n";
 
-         $this->_privKey = openssl_pkey_get_private($pem);
 
-         return true;
 
-     }
 
-     /**
 
-      * * setup the public key
 
-      */
 
-     private function setupPubKey()
 
-     {
 
-         if (is_resource($this->_pubKey)) {
 
-             return true;
 
-         }
 
-         $pem = chunk_split($this->publicKey, 64, "\n");
 
-         $pem = "-----BEGIN PUBLIC KEY-----\n" . $pem . "-----END PUBLIC KEY-----\n";
 
-         $this->_pubKey = openssl_pkey_get_public($pem);
 
-         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;
 
-     }
 
-     /**
 
-      * 构造签名
 
-      * @param string $dataString 被签名数据
 
-      * @return string
 
-      */
 
-     public function sign($dataString)
 
-     {
 
-         $this->setupPrivKey();
 
-         $signature = false;
 
-         openssl_sign($dataString, $signature, $this->_privKey);
 
-         return base64_encode($signature);
 
-     }
 
-     /**
 
-      * 验证签名
 
-      * @param string $dataString 被签名数据
 
-      * @param string $signString 已经签名的字符串
 
-      * @return number 1签名正确 0签名错误
 
-      */
 
-     public function verify($dataString, $signString)
 
-     {
 
-         $this->setupPubKey();
 
-         $signature = base64_decode($signString);
 
-         $flg = openssl_verify($dataString, $signature, $this->_pubKey);
 
-         return $flg;
 
-     }
 
-     public function __destruct()
 
-     {
 
-         is_resource($this->_privKey) && @openssl_free_key($this->_privKey);
 
-         is_resource($this->_pubKey) && @openssl_free_key($this->_pubKey);
 
-     }
 
- }
 
 
  |