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 相关文章推荐
利用 window_onload 实现select默认选择
Oct 09 PHP
THINKPHP项目开发中的日志记录实例分析
Dec 01 PHP
php提取字符串中网站url地址的方法
Dec 03 PHP
迁移PHP版本到PHP7
Feb 06 PHP
php计算到指定日期还有多少天的方法
Apr 14 PHP
WIN8.1下搭建PHP5.6环境
Apr 29 PHP
PHP 读取大文件并显示的简单实例(推荐)
Aug 12 PHP
php加密之discuz内容经典加密方式实例详解
Feb 04 PHP
PHP实现中国公民身份证号码有效性验证示例代码
May 03 PHP
PHP按符号截取字符串的指定部分的实现方法
Sep 10 PHP
yii2实现Ueditor百度编辑器的示例代码
Nov 02 PHP
php workerman定时任务的实现代码
Dec 23 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
超神学院:天使彦公认最美的三个视角,网友:我的天使快下凡吧!
2020/03/02 国漫
PHP IPV6正则表达式验证代码
2010/02/16 PHP
基于php设计模式中工厂模式详细介绍
2013/05/15 PHP
php中使用PHPExcel读写excel(xls)文件的方法
2014/09/15 PHP
PHP中的socket_read和socket_recv区别详解
2015/02/09 PHP
php读取txt文件并将数据插入到数据库
2016/02/23 PHP
解决laravel查询构造器中的别名问题
2019/10/17 PHP
JavaScript中的对象化编程
2008/01/16 Javascript
JavaScript中把数字转换为字符串的程序代码
2013/06/19 Javascript
jQuery动态添加、删除元素的方法
2014/01/09 Javascript
js使用post 方式打开新窗口
2015/02/26 Javascript
js设置document.domain实现跨域的注意点分析
2015/05/21 Javascript
AngularJS使用ng-app自动加载bootstrap框架问题分析
2017/01/04 Javascript
Vue.js常用指令的使用小结
2017/06/23 Javascript
vue实现长图垂直居上 vue实现短图垂直居中
2017/10/18 Javascript
Nodejs调用Dll模块的方法
2018/09/17 NodeJs
详解如何用webpack4从零开始构建react开发环境
2019/01/27 Javascript
vue项目中使用bpmn为节点添加颜色的方法
2020/04/30 Javascript
快速解决vue2+vue-cli3项目ie兼容的问题
2020/11/17 Vue.js
Python使用plotly绘制数据图表的方法
2017/07/18 Python
python3实现爬取淘宝美食代码分享
2018/09/23 Python
手把手教你如何安装Pycharm(详细图文教程)
2018/11/28 Python
解决python3中的requests解析中文页面出现乱码问题
2019/04/19 Python
使用Python操作MySQL的小技巧
2020/09/10 Python
python使用隐式循环快速求和的实现示例
2020/09/11 Python
css3边框_动力节点Java学院整理
2017/07/11 HTML / CSS
HTML5 通过Vedio标签实现视频循环播放的示例代码
2020/08/05 HTML / CSS
法国奢华女性时尚配饰网上商店:Monnier Frères
2016/08/27 全球购物
淘宝店铺营销方案
2014/02/13 职场文书
2014年庆元旦活动方案
2014/02/15 职场文书
标准化管理实施方案
2014/02/25 职场文书
公司财务人员岗位职责
2015/04/14 职场文书
简历自我评价范文
2019/04/24 职场文书
Javascript之datagrid查询详解
2021/09/15 Javascript
pandas进行数据输入和输出的方法详解
2022/03/23 Python
Mysql数据库事务的脏读幻读及不可重复读详解
2022/05/30 MySQL