php openssl rsa 加密解密应用

1、生成公钥和私钥

生成私钥:
openssl genrsa 1024 > private.key

(注意,1024是密钥的长度,如果密钥较长,相应加密后的密文也会较长)

生成公钥:
openssl rsa -in private.key -pubout > public.key

2、加解密

<?php  
  
class mycrypt {  
  
    public $pubkey;  
    public $privkey;  
  
    function __construct() {  
                $this->pubkey = file_get_contents('/home/openssl/public.key');  
                $this->privkey = file_get_contents('/home/openssl/private.key');  
    }  
  
    public function encrypt($data) {  
        if (openssl_public_encrypt($data, $encrypted, $this->pubkey))  
            $data = base64_encode($encrypted);  
        else  
            throw new Exception('Unable to encrypt data. Perhaps it is bigger than the key size?');  
  
        return $data;  
    }  
  
    public function decrypt($data) {  
        if (openssl_private_decrypt(base64_decode($data), $decrypted, $this->privkey))  
            $data = $decrypted;  
        else  
            $data = '';  
  
        return $data;  
    }  
  
}  
  
$rsa = new mycrypt();  
echo $rsa -> encrypt('abc');  
  
//echo $rsa -> decrypt('W+ducpssNJlyp2XYE08wwokHfT0bm87yBz9vviZbfjAGsy/U9Ns9FIed684lWjYyyofi/1YWrU0Mp8vLOYi8l6CfklBY=');  

2017.3.20   /   热度:1328   /   分类: php

发表评论:

©地球仪的BLOG  |  Powered by Emlog