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 相关文章推荐
基于mysql的论坛(2)
Oct 09 PHP
php中文字符截取防乱码
Mar 28 PHP
php 数学运算验证码实现代码
Oct 11 PHP
php开发过程中关于继承的使用方法分享
Jun 17 PHP
PHP教程之PHP中shell脚本的使用方法分享
Feb 23 PHP
PHP错误WARNING: SESSION_START() [FUNCTION.SESSION-START]解决方法
May 04 PHP
PHP中的Streams详细介绍
Nov 12 PHP
Zend Framework框架之Zend_Mail实现发送Email邮件验证功能及解决标题乱码的方法
Mar 21 PHP
PHP中strpos、strstr和stripos、stristr函数分析
Jun 11 PHP
PHP自动补全表单的两种方法
Mar 06 PHP
PHP使用ActiveMQ实例
Feb 05 PHP
Laravel框架基于ajax实现二级联动功能示例
Jan 17 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实现的简易版图片相似度比较
2015/01/07 PHP
php对数组内元素进行随机调换的方法
2015/05/12 PHP
PHP函数按引用传递参数及函数可选参数用法示例
2018/06/04 PHP
PHP使用PhpSpreadsheet操作Excel实例详解
2020/03/26 PHP
JQuery 技巧和窍门整理(8个)
2010/04/22 Javascript
JavaScript 比较时间大小的代码
2010/04/24 Javascript
JavaScript在IE和Firefox浏览器下的7个差异兼容写法小结
2010/06/18 Javascript
JavaScript高级程序设计 扩展--关于动态原型
2010/11/09 Javascript
Javascript操作cookie的函数代码
2012/10/03 Javascript
Javascript在IE和FireFox中的不同表现简析
2012/12/03 Javascript
Javascript学习笔记之数组的遍历和 length 属性
2014/11/23 Javascript
javascript实现避免页面按钮重复提交
2015/01/08 Javascript
jquery实现Ctrl+Enter提交表单的方法
2015/07/21 Javascript
jQuery插件之Tocify动态节点目录菜单生成器附源码下载
2016/01/08 Javascript
AngularJS控制器之间的数据共享及通信详解
2016/08/01 Javascript
JavaScript中如何使用cookie实现记住密码功能及cookie相关函数介绍
2016/11/10 Javascript
JS正则表达式修饰符global(/g)用法分析
2016/12/27 Javascript
Angular实现一个简单的多选复选框的弹出框指令实例
2017/04/25 Javascript
深究AngularJS中ng-drag、ng-drop的用法
2017/06/12 Javascript
详解使用Node.js 将txt文件转为Excel文件
2017/07/05 Javascript
微信小程序云开发 生成带参小程序码流程
2019/05/18 Javascript
Vue+ElementUI项目使用webpack输出MPA的方法
2019/08/27 Javascript
ant design vue导航菜单与路由配置操作
2020/10/28 Javascript
详细解读Python中的__init__()方法
2015/05/02 Python
python实现批量改文件名称的方法
2015/05/25 Python
Python基于Matplotlib库简单绘制折线图的方法示例
2017/08/14 Python
对python调用RPC接口的实例详解
2019/01/03 Python
Python Web项目Cherrypy使用方法镜像
2020/11/05 Python
HTML5 UTF-8 中文乱码的解决方法
2013/11/18 HTML / CSS
护理专业毕业生自我鉴定
2013/10/08 职场文书
新闻编辑自荐书范文
2014/02/12 职场文书
公司会计主管岗位责任制
2014/03/01 职场文书
三下乡个人总结
2015/03/04 职场文书
2015年营销工作总结范文
2015/04/23 职场文书
领导视察通讯稿
2015/07/18 职场文书
2016年师德学习心得体会
2016/01/12 职场文书