この記事では、opensslを使用してrsa非対称暗号化アルゴリズムを実装する例を中心に紹介しますので、ぜひ参考にしてください
代コード如下: _keyPath = $path; } /** * キーペアを作成し、キーを $this->_keyPath に保存します */ パブリック関数 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); } /** * 秘密キーを設定します */ パブリック関数 setupPrivKey() { if(is_resource($this->_privKey)){ true を返します。 } $file = $this->_keyPath 。 DIRECTORY_SEPARATOR 。 '秘密キー'; $prk = file_get_contents($file); $this->_privKey = openssl_pkey_get_private($prk); true を返します。 } /** * 公開キーを設定します */ パブリック関数 setupPubKey() { if(is_resource($this->_pubKey)){ true を返します。 } $file = $this->_keyPath 。 DIRECTORY_SEPARATOR 。 'pub.key'; $puk = file_get_contents($file); $this->_pubKey = openssl_pkey_get_public($puk); true を返します。 } /** * 秘密鍵で暗号化する */ パブリック関数 privEncrypt($data) { if(!is_string($data)){ null を返します。 } $this->setupPrivKey(); $r = openssl_private_encrypt($data, $encrypted, $this->_privKey); if($r){ Base64_encode($encrypted) を返します。 } null を返します。 } /** * 秘密鍵を使用して復号化します */ パブリック関数 privDecrypt($encrypted) { if(!is_string($encrypted)){ null を返します。 } $this->setupPrivKey(); $encrypted =base64_decode($encrypted); $r = openssl_private_decrypt($encrypted, $decrypted, $this->_privKey); if($r){ $decrypted を返します。 } null を返します。 } /** * 公開鍵で暗号化する */ パブリック関数 pubEncrypt($data) { if(!is_string($data)){ null を返します。 } $this->setupPubKey(); $r = openssl_public_encrypt($data, $encrypted, $this->_pubKey); if($r){ Base64_encode($encrypted) を返します。 } null を返します。 } /** * 公開キーを使用して復号化します */ パブリック関数 pubDecrypt($crypted) { if(!is_string($crypted)){ null を返します。 } $this->setupPubKey(); $crypted = Base64_decode($crypted); $r = openssl_public_decrypt($crypted, $decrypted, $this->_pubKey); if($r){ $decrypted を返します。 } null を返します。 } パブリック関数 __destruct() { @ fclose($this->_privKey); @ fclose($this->_pubKey); } } //以下は非常に簡単なデモです。必要がない場合は削除してください $rsa = 新しい Rsa('ssl-key'); //私钥加密、公钥解密 echo 'ソース:我是老鳖