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通用检测函数集合
Nov 25 PHP
PHP缩略图等比例无损压缩,可填充空白区域补充色
Jun 10 PHP
PHP跳转页面的几种实现方法详解
Jun 08 PHP
浅析PHP原理之变量分离/引用(Variables Separation)
Aug 09 PHP
PHP实现将HTML5中Canvas图像保存到服务器的方法
Nov 28 PHP
php表单提交与$_POST实例分析
Jan 26 PHP
ThinkPHP数据操作方法总结
Sep 28 PHP
在WordPress的后台中添加顶级菜单和子菜单的函数详解
Jan 11 PHP
orm获取关联表里的属性值
Apr 17 PHP
PHP code 验证码生成类定义和简单使用示例
May 27 PHP
如何用PHP websocket实现网页实时聊天
May 26 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
收音机指标测试方法及仪器
2021/03/01 无线电
example1.php
2006/10/09 PHP
wordpress之wp-settings.php
2007/08/17 PHP
php flush类输出缓冲剖析
2008/10/19 PHP
phpStudy配置多站点多域名方法及遇到的403错误解决方法
2017/10/19 PHP
Javascript string 扩展库代码
2010/04/09 Javascript
杨氏矩阵查找的JS代码
2013/03/21 Javascript
js实现文件上传表单域美化特效
2015/11/02 Javascript
详解javascript事件冒泡
2016/01/09 Javascript
Bootstrap打造一个左侧折叠菜单的系统模板(二)
2016/05/17 Javascript
自己封装的一个原生JS拖动方法(推荐)
2016/11/22 Javascript
使用jQuery实现动态添加小广告
2017/07/11 jQuery
微信小程序实现类似微信点击语音播放效果
2020/03/30 Javascript
Javascript柯里化实现原理及作用解析
2020/10/22 Javascript
[03:16]DOTA2完美大师赛主赛事首日集锦
2017/11/23 DOTA
python的id()函数介绍
2013/02/10 Python
Python中对列表排序实例
2015/01/04 Python
Python3.6正式版新特性预览
2016/12/15 Python
Pyqt实现无边框窗口拖动以及窗口大小改变
2018/04/19 Python
浅谈python写入大量文件的问题
2018/11/09 Python
Python自动化之数据驱动让你的脚本简洁10倍【推荐】
2019/06/04 Python
Python直接赋值、浅拷贝与深度拷贝实例分析
2019/06/18 Python
搭建python django虚拟环境完整步骤详解
2019/07/08 Python
Django Form 实时从数据库中获取数据的操作方法
2019/07/25 Python
图文详解Django使用Pycharm连接MySQL数据库
2019/08/09 Python
python实现自动化报表功能(Oracle/plsql/Excel/多线程)
2019/12/02 Python
Python通过Schema实现数据验证方式
2020/11/12 Python
优秀毕业生推荐信
2013/11/02 职场文书
项目申报专员岗位职责
2014/07/09 职场文书
元旦标语大全
2014/10/09 职场文书
被告答辩状范文
2015/05/22 职场文书
HTML基础-标签分类(闭合标签,空标签,块级元素,行内元素,行级块元素,可替换元素)
2021/03/31 HTML / CSS
上手简单,功能强大的Python爬虫框架——feapder
2021/04/27 Python
dubbo集成zipkin获取Traceid的实现
2021/07/26 Java/Android
Redis集群新增、删除节点以及动态增加内存的方法
2021/09/04 Redis
Python实现Excel文件的合并(以新冠疫情数据为例)
2022/03/20 Python