php 7对称加密,非对称加密openssl协议在php7实践

##新建openssl.php

[root@iz2vcf47jzvf8dxrapolf7z test]# cat openssl.php

/**

* 私钥加密/公钥解密

*

* @param $str string 待加解密字符串

* @param $isEncrypt boolean

* return string|null

*/

function opensslPrivateEncrypt($str, $isEncrypt = true)

{

if($isEncrypt){

$privateKey = file_get_contents('./rsa_private_key.pem');

$privateKey = openssl_pkey_get_private($privateKey);

return openssl_private_encrypt($str, $encryptedStr, $privateKey)

? base64_encode($encryptedStr) : null;

}else{

$publicKey = file_get_contents('./rsa_public_key.pem');

$publicKey = openssl_pkey_get_public($publicKey);

return (openssl_public_decrypt(base64_decode($str), $decryptedStr, $publicKey))

? $decryptedStr : null;

}

}

/**

* 公钥加密/私钥解密

*

* @param $str string 待加解密字符串

* @param $isEncrypt boolean

* return string|null

*/

function opensslPublicEncrypt($str , $isEncrypt = true)

{

if($isEncrypt){

$publicKey = file_get_contents('./rsa_public_key.pem');

$publicKey = openssl_pkey_get_public($publicKey);

return openssl_public_encrypt($str, $encryptedStr, $publicKey)

? base64_encode($encryptedStr) : null;

}else{

$privateKey = file_get_contents('./rsa_private_key.pem');

$privateKey = openssl_pkey_get_private($privateKey);

return (openssl_private_decrypt(base64_decode($str), $decryptedStr, $privateKey))

? $decryptedStr : null;

}

}

$config = array();

$config['title'] = 'PHP is the best program language.';

$config['comment'] = 'PHPERS are great people.';

$privateEncrypt = opensslPrivateEncrypt(json_encode($config));

echo("##privateEncrypt is:" . PHP_EOL);

echo($privateEncrypt . PHP_EOL);

$privateDecrypt = opensslPrivateEncrypt($privateEncrypt, false);

echo("##privateDecrypt is:" . PHP_EOL);

echo($privateDecrypt . PHP_EOL);

$publicEncrypt = opensslPublicEncrypt(json_encode($config));

echo("##publicEncrypt is:" . PHP_EOL);

echo($publicEncrypt . PHP_EOL);

$publicDecrypt = opensslPublicEncrypt($publicEncrypt, false);

echo("##publicDecrypt is:" . PHP_EOL);

echo($publicDecrypt . PHP_EOL);

##执行脚本

[root@iz2vcf47jzvf8dxrapolf7z test]# php openssl.php

##privateEncrypt is:

mLrLIAwbwlE69Yj5/lnNw1t8qSjhnFa+96s/kSMYweAn/HEsV7jfVAJ6mn/FY2DRRWkKeOnguUYsRcFTBcS1ieG7UtqbUAASXA5dwVgtTrFoDcDhHMl7p90+dIO8n+vMoBx1kkUegpvtH03y3MgUVSj/BLkLE8jrFXyjGufIcv0=

##privateDecrypt is:

{"title":"PHP is the best program language.","comment":"PHPERS are great people."}

##publicEncrypt is:

NW2k5m2pKrZmEMSHXiK7mfyC+yDjH1+b6TrEMPv+ywBfsUlo2P8eWwcXOQxvsV4UG87a1S4Xa2QySntdEwhpYoim97457ODVVCb6jx+cqqdWJ1wlLS+gx7FJxw7Z0kMPmCm5iMcQwWPK+UzF+dpc/gJFa9uGAAmYczUumOauAx0=

##publicDecrypt is:

{"title":"PHP is the best program language.","comment":"PHPERS are great people."}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值