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调用Java对象的方法
Oct 09 PHP
php 全文搜索和替换的实现代码
Jul 29 PHP
php array的学习笔记
May 16 PHP
php中将汉字转换成拼音的函数代码
Sep 08 PHP
php中curl和file_get_content的区别
May 10 PHP
从零开始学YII2框架(一)通过Composer安装Yii2框架
Aug 20 PHP
php模拟登陆的实现方法分析
Jan 09 PHP
在WordPress的文章编辑器中设置默认内容的方法
Dec 29 PHP
PHP开发的文字水印,缩略图,图片水印实现类与用法示例
Apr 12 PHP
PHP 加密 Password Hashing API基础知识点
Mar 02 PHP
PHP实现文件上传操作和封装
Mar 04 PHP
PHP开发API接口签名生成及验证操作示例
May 27 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中使用foreach()遍历二维数组的简单实例
2016/06/13 PHP
PHP goto语句用法实例
2019/08/06 PHP
JavaScript脚本语言在网页中的简单应用
2007/05/13 Javascript
javascript 三种编解码方式
2010/02/01 Javascript
js 兼容多浏览器的回车和鼠标焦点事件代码(IE6/7/8,firefox,chrome)
2010/04/14 Javascript
jquery插件开发之实现md5插件
2014/03/17 Javascript
javascript每日必学之运算符
2016/02/16 Javascript
jQuery实现表格隔行及滑动,点击时变色的方法【测试可用】
2016/08/20 Javascript
angularjs实现的前端分页控件示例
2017/02/10 Javascript
利用ES6语法重构React组件详解
2017/03/02 Javascript
前端主流框架vue学习笔记第一篇
2017/07/26 Javascript
webpack+react+antd脚手架优化的方法
2018/04/02 Javascript
从理论角度讨论JavaScript闭包
2019/04/03 Javascript
「中高级前端面试」JavaScript手写代码无敌秘籍(推荐)
2019/04/08 Javascript
JS co 函数库的含义和用法实例总结
2020/04/08 Javascript
Vue实现购物车基本功能
2020/11/08 Javascript
python操作数据库之sqlite3打开数据库、删除、修改示例
2014/03/13 Python
python中多个装饰器的调用顺序详解
2019/07/16 Python
python实现切割url得到域名、协议、主机名等各个字段的例子
2019/07/25 Python
套娃式文件夹如何通过Python批量处理
2020/08/23 Python
HTML5 Canvas锯齿图代码实例
2014/04/10 HTML / CSS
澳大利亚家庭花园和DIY工具网店:VidaXL
2019/05/03 全球购物
zooplus意大利:在线宠物商店
2019/08/07 全球购物
英国领先的在线礼品店:Getting Personal
2019/09/24 全球购物
模具专业推荐信
2013/10/30 职场文书
面试后的英文感谢信
2014/02/01 职场文书
亲戚结婚的请假条
2014/02/11 职场文书
股东合作协议书
2014/09/12 职场文书
2014年标准化工作总结
2014/12/17 职场文书
研究生简历自我评
2015/03/11 职场文书
同学聚会开幕词
2019/04/02 职场文书
话题作文之呼唤
2019/12/18 职场文书
浅谈pytorch中的dropout的概率p
2021/05/27 Python
写一个Python脚本下载哔哩哔哩舞蹈区的所有视频
2021/05/31 Python
HTML5页面音频自动播放的实现方式
2021/06/21 HTML / CSS
SpringBoot2零基础到精通之数据库专项精讲
2022/03/22 Java/Android