200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 使用openssl实现rsa非对称加密算法示例

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

时间:2021-01-01 04:10:39

相关推荐

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

php教程|php手册

使用,openssl,实现,rsa,非对称,加密,算法,示例,这篇,文章,主要,介绍了,使用,openssl,实现,rs

php教程-php手册

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

订餐客服系统源码,ubuntu 改网卡地址,tomcat官网是哪个,机票订单爬虫,php基础知识概括,汕尾必应seolzw

代码如下:

_keyPath = $path;

}

php开发erp案例源码下载,ubuntu如何查看服务,python爬虫有道词典,php程序员年终总结报告,运营seo岗位lzw

/**

* 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);

淘宝优惠券查找源码,分区重新ubuntu,tomcat的线程池大小,firefox网页爬虫,php 分行,seo如何增加百度蜘蛛收录lzw

$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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。