PHP中使用OpenSSL生成证书及加密解密


Posted in PHP onFebruary 05, 2017

依赖于OpenSSL扩展

/*加密解密*/
function authcode($string, $operation = 'E') {
  $ssl_public = file_get_contents(DATA_PATH."/conf/cert_public.key");
  $ssl_private = file_get_contents(DATA_PATH."/conf/cert_private.pem");
  $pi_key = openssl_pkey_get_private($ssl_private);//这个函数可用来判断私钥是否是可用的,可用返回资源id Resource id
  $pu_key = openssl_pkey_get_public($ssl_public);//这个函数可用来判断公钥是否是可用的
  if(false == ($pi_key || $pu_key)) return '证书错误';
  $data = "";
  if($operation=='D'){
    openssl_private_decrypt(base64_decode($string),$data,$pi_key);//私钥解密
  }else{
    openssl_public_encrypt($string,$data,$pu_key);//公钥加密
    $data = base64_encode($data);
  }
  return $data;
}
/*生成证书*/
function exportOpenSSLFile(){
  $config = array(
    "digest_alg"    => "sha512",
    "private_key_bits" => 4096,           //字节数  512 1024 2048  4096 等
    "private_key_type" => OPENSSL_KEYTYPE_RSA,   //加密类型
  );
  $res = openssl_pkey_new($config);
  if($res == false) return false;
  openssl_pkey_export($res, $private_key);
  $public_key = openssl_pkey_get_details($res);
  $public_key = $public_key["key"];
  file_put_contents(DATA_PATH."/conf/cert_public.key",$public_key);
  file_put_contents(DATA_PATH."/conf/cert_private.pem",$private_key);
  openssl_free_key($res);
}

更多关于OpenSS的文章可以查看下面的相关文章

PHP 相关文章推荐
php下一个阿拉伯数字转中文数字的函数
Jul 16 PHP
PHP导出MySQL数据到Excel文件(fputcsv)
Jul 03 PHP
php中通过正则表达式下载内容中的远程图片的函数代码
Jan 10 PHP
php删除与复制文件夹及其文件夹下所有文件的实现代码
Jan 23 PHP
关于PHP的相似度计算函数:levenshtein的使用介绍
Apr 15 PHP
php常用Stream函数集介绍
Jun 24 PHP
PHP中header用法小结
May 23 PHP
php array_reverse 以相反的顺序返回数组实例代码
Apr 11 PHP
PHP通过get方法获得form表单数据方法总结
Sep 12 PHP
PHP实现字符串的全排列详解
Apr 24 PHP
TP5框架实现自定义分页样式的方法示例
Apr 05 PHP
PHP生成随机密码4种方法及性能对比
Dec 11 PHP
PHP的中使用非缓冲模式查询数据库的方法
Feb 05 #PHP
php+redis在实际项目中HTTP 500: Internal Server Error故障排除
Feb 05 #PHP
php实现给二维数组中所有一维数组添加值的方法
Feb 04 #PHP
PHP进制转换实例分析(2,8,16,36,64进制至10进制相互转换)
Feb 04 #PHP
php加密之discuz内容经典加密方式实例详解
Feb 04 #PHP
yii2实现 "上一篇,下一篇" 功能的代码实例
Feb 04 #PHP
PHP正则表达式匹配替换与分割功能实例浅析
Feb 04 #PHP
You might like
10条PHP高级技巧[修正版]
2011/08/02 PHP
CodeIgniter框架过滤HTML危险代码
2014/06/12 PHP
php关联数组快速排序的方法
2015/04/17 PHP
php动态生成缩略图并输出显示的方法
2015/04/20 PHP
Laravel框架在本地虚拟机快速安装的方法详解
2018/06/11 PHP
Laravel5.1 框架表单验证操作实例详解
2020/01/07 PHP
怎么让脚本或里面的函数在所有图片都载入完毕的时候执行
2006/10/17 Javascript
jQuery 各种浏览器下获得日期区别
2008/12/22 Javascript
js 数组实现一个类似ruby的迭代器
2009/10/27 Javascript
jQuery:delegate中select()不起作用的解决方法(实例讲解)
2014/01/26 Javascript
Javascript基础教程之变量
2015/01/18 Javascript
JavaScript常用脚本汇总(三)
2015/03/04 Javascript
js实现文本框只允许输入数字并限制数字大小的方法
2015/08/19 Javascript
JavaScript数据推送Comet技术详解
2016/04/07 Javascript
socket.io学习教程之基础介绍(一)
2017/04/29 Javascript
微信小程序封装http访问网络库实例代码
2017/05/24 Javascript
mac中利用NVM管理不同node版本的方法详解
2017/11/08 Javascript
Vue基于iview实现登录密码的显示与隐藏功能
2020/03/06 Javascript
从0搭建vue-cli4脚手架
2020/06/17 Javascript
[51:36]EG vs VP 2018国际邀请赛淘汰赛BO3 第一场 8.24
2018/08/25 DOTA
[00:44]华丽开场!DOTA2勇士令状带来全新对阵画面
2019/05/15 DOTA
Windows下PyMongo下载及安装教程
2015/04/27 Python
Python进程间通信用法实例
2015/06/04 Python
Python实现App自动签到领取积分功能
2018/09/29 Python
widows下安装pycurl并利用pycurl请求https地址的方法
2018/10/15 Python
Python数据类型之String字符串实例详解
2019/05/08 Python
python3实现在二叉树中找出和为某一值的所有路径(推荐)
2019/12/26 Python
HTML5的download属性详细介绍和使用实例
2014/04/23 HTML / CSS
JavaScript实现前端网页版倒计时
2021/03/24 Javascript
材料化学应届生求职信
2013/10/09 职场文书
30年同学聚会感言
2014/01/30 职场文书
警示教育活动总结
2014/05/05 职场文书
给校长的建议书100字
2014/05/16 职场文书
质量提升方案
2014/06/16 职场文书
人口与计划生育目标管理责任书
2014/07/29 职场文书
乱丢垃圾袋检讨书
2014/10/08 职场文书