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 12 PHP
聊天室php&mysql(二)
Oct 09 PHP
PHP循环语句笔记(foreach,list)
Nov 29 PHP
ThinkPHP模板之变量输出、自定义函数与判断语句用法
Nov 01 PHP
php使用CURL伪造IP和来源实例详解
Jan 15 PHP
php查看网页源代码的方法
Mar 13 PHP
PHP中strncmp()函数比较两个字符串前2个字符是否相等的方法
Jan 07 PHP
三个思路解决laravel上传文件报错:413 Request Entity Too Large问题
Nov 13 PHP
PHP创建自己的Composer包方法
Apr 09 PHP
thinkPHP5框架auth权限控制类与用法示例
Jun 12 PHP
PHP删除数组中特定元素的两种方法
Feb 28 PHP
PHP使用HTML5 FormData对象提交表单操作示例
Jul 02 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
php面向对象全攻略 (七) 继承性
2009/09/30 PHP
用PHP查询搜索引擎排名位置的代码
2010/01/05 PHP
php利用smtp类实现电子邮件发送
2015/10/30 PHP
基于thinkPHP类的插入数据库操作功能示例
2017/01/06 PHP
Yii框架引用插件和ckeditor中body与P标签去除的方法
2017/01/19 PHP
PHP获取路径和目录的方法总结【必看篇】
2017/03/04 PHP
PHP + plupload.js实现多图上传并显示进度条加删除实例代码
2017/03/06 PHP
php函数式编程简单示例
2019/08/08 PHP
基于jquery的滑动样例代码
2010/11/20 Javascript
juqery 学习之四 筛选过滤
2010/11/30 Javascript
javascript 实现 秒杀,团购 倒计时展示的记录 分享
2013/07/12 Javascript
jquery ajax 简单范例(界面+后台)
2013/11/19 Javascript
JavaScript中的连字符详解
2013/11/28 Javascript
JS调用页面表格导出excel示例代码
2014/03/18 Javascript
jquery实现先淡出再折叠收起的动画效果
2015/08/07 Javascript
sso跨域写cookie的一段js脚本(推荐)
2016/05/25 Javascript
json与jsonp知识小结(推荐)
2016/08/16 Javascript
vue实现点击图片放大效果
2017/08/15 Javascript
Vue精简版风格概述
2018/01/30 Javascript
浅谈Vue网络请求之interceptors实际应用
2018/02/28 Javascript
详解如何在Vue项目中发送jsonp请求
2019/10/25 Javascript
[01:33]DOTA2上海特级锦标赛 LIQUID战队完整宣传片
2016/03/16 DOTA
[52:06]完美世界DOTA2联赛决赛日 Inki vs LBZS 第一场 11.08
2020/11/10 DOTA
python实现电子词典
2020/03/03 Python
python opencv实现简易画图板
2020/08/27 Python
ECCO爱步美国官网:来自丹麦的鞋履品牌
2016/11/23 全球购物
奥斯汀独木舟和皮划艇:Austin Canoe & Kayak
2018/05/22 全球购物
Antonioli美国在线商店:时尚前卫奢华
2019/07/29 全球购物
J2EE系统只能是基于web
2015/09/08 面试题
财务出纳员岗位职责
2013/11/26 职场文书
学校安全工作制度
2014/01/19 职场文书
企业文化标语大全
2014/06/10 职场文书
淮海战役观后感
2015/06/11 职场文书
教师岗位说明书
2015/09/30 职场文书
有关信念的名言语录集锦
2019/12/06 职场文书
Spring Boot 实现 WebSocket
2022/04/30 Java/Android