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中文汉字验证码
Apr 08 PHP
PHP session有效期问题
Apr 26 PHP
php设计模式 Singleton(单例模式)
Jun 26 PHP
php和数据库结合的一个简单的web实例 代码分析 (php初学者)
Jul 28 PHP
第五章 php数组操作
Dec 30 PHP
php中导出数据到excel时数字变为科学计数的解决方法
Feb 03 PHP
php计算整个mysql数据库大小的方法
Jun 19 PHP
如何在旧的PHP系统中使用PHP 5.3之后的库
Dec 02 PHP
详解PHP匿名函数与注意事项
Mar 29 PHP
CI框架中数据库操作函数$this->db->where()相关用法总结
May 17 PHP
Yii2实现ActiveForm ajax提交
May 26 PHP
php操作redis数据库常见方法实例总结
Feb 20 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 多维数组排序(usort,uasort)
2010/06/30 PHP
ubuntu10.04配置 nginx+php-fpm模式的详解
2013/06/03 PHP
iOS+PHP注册登录系统 PHP部分(上)
2016/12/26 PHP
实例分析PHP将字符串转换成数字的方法
2019/01/27 PHP
一个js封装的不错的选项卡效果代码
2008/02/15 Javascript
Extjs EditorGridPanel中ComboBox列的显示问题
2011/07/04 Javascript
选择器中含有空格在使用示例及注意事项
2013/07/31 Javascript
Node.js开发指南中的简单实例(mysql版)
2013/09/17 Javascript
7个JS基础知识总结
2014/03/05 Javascript
javascript面向对象特性代码实例
2014/06/12 Javascript
js实现div弹出层的方法
2014/11/20 Javascript
JQuery节点元素属性操作方法
2015/06/11 Javascript
jQuery满意度星级评价插件特效代码分享
2015/08/19 Javascript
js判断当前页面在移动设备还是在PC端中打开
2016/01/06 Javascript
WEB前端开发框架Bootstrap3 VS Foundation5
2016/05/16 Javascript
Canvas 制作动态进度加载水球详解及实例代码
2016/12/09 Javascript
如何利用JQuery实现从底部回到顶部的功能
2016/12/27 Javascript
基于vue cli重构多页面脚手架过程详解
2018/01/23 Javascript
解决vue.js提交数组时出现数组下标的问题
2019/11/05 Javascript
JavaScript switch语句使用方法简介
2019/12/30 Javascript
[06:57]DOTA2-DPC中国联赛 正赛 Ehome vs PSG.LGD 选手采访
2021/03/11 DOTA
Python计算程序运行时间的方法
2014/12/13 Python
介绍Python中的fabs()方法的使用
2015/05/14 Python
Django异步任务之Celery的基本使用
2019/03/23 Python
python实现可变变量名方法详解
2019/07/01 Python
Django框架HttpResponse对象用法实例分析
2019/11/01 Python
无需JS和jQuery代码实现CSS3鼠标浮动放大图片
2016/11/21 HTML / CSS
澳大利亚运动鞋商店:Platypus Shoes
2019/09/27 全球购物
C# Debug和Testing相关面试题
2015/10/25 面试题
远程调用的原理
2014/07/05 面试题
写自荐信的七个技巧
2013/10/15 职场文书
幼儿园六一儿童节文艺汇演主持词
2014/03/21 职场文书
2014年人事行政工作总结
2014/12/03 职场文书
个人汇报材料范文
2014/12/30 职场文书
2015年领导班子工作总结
2015/05/23 职场文书
2016年第104个国际护士节活动总结
2016/04/06 职场文书