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一个找二层目录的小东东
Aug 02 PHP
php上传文件,创建递归目录的实例代码
Oct 18 PHP
PHP IE中下载附件问题解决方法
Jan 07 PHP
Drupal7中常用的数据库操作实例
Mar 02 PHP
浅析PHP编程中10个最常见的错误
Aug 08 PHP
学习php设计模式 php实现适配器模式
Dec 07 PHP
php实现贪吃蛇小游戏
Jul 26 PHP
PHP入门教程之面向对象基本概念实例分析
Sep 11 PHP
PHP文件上传处理案例分析
Oct 15 PHP
PHP开发之用微信远程遥控服务器
Jan 25 PHP
PHP里的$_GET数组介绍
Mar 22 PHP
使用laravel和ajax实现整个页面无刷新的操作方法
Oct 03 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 select,radio和checkbox默认选择的实现方法
2010/05/15 PHP
phpexcel导出excel的颜色和网页中的颜色显示不一致
2012/12/11 PHP
关于PHP模板Smarty的初级使用方法以及心得分享
2013/06/21 PHP
PHP实现的解汉诺塔问题算法示例
2018/08/06 PHP
PHP数组实际占用内存大小原理解析
2020/12/11 PHP
js获取图片长和宽度的代码
2009/11/24 Javascript
简短几句jquery代码的实现一个图片向上滚动切换
2011/09/02 Javascript
js二维数组排序的简单示例代码
2014/01/24 Javascript
js点击选择文本的方法
2015/02/09 Javascript
分享五个有用的jquery小技巧
2015/10/08 Javascript
JS组件Bootstrap Select2使用方法详解
2020/04/17 Javascript
浅谈js中同名函数和同名变量的执行问题
2017/02/12 Javascript
HTML5实现微信拍摄上传照片功能
2017/04/21 Javascript
vue结合Echarts实现点击高亮效果的示例
2018/03/17 Javascript
微信小程序中进行地图导航功能的实现方法
2018/06/29 Javascript
JavaScript实现的简单Tab点击切换功能示例
2018/07/06 Javascript
微信小程序与后台PHP交互的方法实例分析
2018/12/10 Javascript
Quasar Input:type="number" 去掉上下小箭头 实现加减按钮样式功能
2020/04/09 Javascript
小程序实现可拖动的悬浮按钮
2020/09/07 Javascript
[01:20:05]DOTA2-DPC中国联赛 正赛 Ehome vs VG BO3 第二场 2月5日
2021/03/11 DOTA
python字符串排序方法
2014/08/29 Python
Python的加密模块md5、sha、crypt使用实例
2014/09/28 Python
在Python程序中操作MySQL的基本方法
2015/07/29 Python
放弃 Python 转向 Go语言有人给出了 9 大理由
2017/10/20 Python
Python实现PS滤镜Fish lens图像扭曲效果示例
2018/01/29 Python
Python格式化输出字符串方法小结【%与format】
2018/10/29 Python
Python request post上传文件常见要点
2020/11/20 Python
canvas实现俄罗斯方块的方法示例
2018/12/13 HTML / CSS
使用phonegap克隆和删除联系人的实现方法
2017/03/31 HTML / CSS
什么是聚集索引和非聚集索引
2012/01/17 面试题
2014年教师节活动总结
2014/08/29 职场文书
小学英语听课心得体会
2016/01/14 职场文书
世界上超棒的8种逻辑思维
2019/08/06 职场文书
python基础入门之普通操作与函数(三)
2021/06/13 Python
入门学习Go的基本语法
2021/07/07 Golang
我们认为中短波广播场强仪的最佳组合
2022/04/05 无线电