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 相关文章推荐
10个实用的PHP代码片段
Sep 02 PHP
PHP 线程安全与非线程安全版本的区别深入解析
Aug 06 PHP
PHP swfupload图片上传的实例代码
Sep 30 PHP
PHP父类调用子类方法的代码例子
Apr 09 PHP
PHP简单获取及判断提交来源的方法
Apr 22 PHP
Laravel重写用户登录简单示例
Oct 08 PHP
完美解决在ThinkPHP控制器中命名空间的问题
May 05 PHP
php实现的统计字数函数定义与使用示例
Jul 26 PHP
PHP实现腾讯与百度坐标转换
Aug 05 PHP
laravel 框架配置404等异常页面
Jan 07 PHP
PHP使用Session实现上传进度功能详解
Aug 06 PHP
php和html的区别点详细总结
Sep 24 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程序的php代码
2008/04/07 PHP
php设计模式 Bridge (桥接模式)
2011/06/26 PHP
php语言的7种基本的排序方法
2020/12/28 PHP
php让json_encode不自动转义斜杠“/”的方法
2020/04/27 PHP
细品javascript 寻址,闭包,对象模型和相关问题
2009/04/27 Javascript
扩展Jquery插件处理mouseover时内部有子元素时发生样式闪烁
2011/12/08 Javascript
JS上传图片前的限制包括(jpg jpg gif及大小高宽)等
2012/12/19 Javascript
javascript中的缓动效果实现程序
2012/12/29 Javascript
开源的javascript项目Kissy介绍
2014/11/28 Javascript
使用正则表达式的格式化与高亮显示json字符串
2014/12/03 Javascript
JavaScript实现将xml转换成html table表格的方法
2015/04/17 Javascript
深入浅析JavaScript中的arguments对象(强力推荐)
2016/06/03 Javascript
Javascript操作dom对象之select全面解析
2017/04/24 Javascript
jQuery中each循环的跳出和结束实例
2017/08/16 jQuery
对node.js中render和send的用法详解
2018/05/14 Javascript
layui点击导航栏刷新tab页的示例代码
2018/08/14 Javascript
Vue使用虚拟dom进行渲染view的方法
2019/12/26 Javascript
浅谈nuxtjs校验登录中间件和混入(mixin)
2020/11/06 Javascript
[36:20]完美世界DOTA2联赛PWL S3 access vs Rebirth 第一场 12.17
2020/12/18 DOTA
Python自定义进程池实例分析【生产者、消费者模型问题】
2016/09/19 Python
Python编程实现生成特定范围内不重复多个随机数的2种方法
2017/04/14 Python
numpy 计算两个数组重复程度的方法
2018/11/07 Python
对python中if语句的真假判断实例详解
2019/02/18 Python
详解Python用三种方式统计词频的方法
2019/07/29 Python
python getopt模块使用实例解析
2019/12/18 Python
pymongo insert_many 批量插入的实例
2020/12/05 Python
CSS3 clip-path 用法介绍详解
2018/03/01 HTML / CSS
英国奢侈品网站:MatchesFashion
2016/12/16 全球购物
美国最大的存储市场:SpareFoot
2018/07/23 全球购物
北京某科技有限公司C# .net笔试题
2014/09/27 面试题
计算机专业职业生涯规划范文
2014/01/19 职场文书
简单租房协议书范本
2014/08/20 职场文书
2014年党的群众路线教育实践活动整改措施(个人版)
2014/09/25 职场文书
法院四风对照检查材料思想汇报
2014/10/06 职场文书
java objectUtils 使用可能会出现的问题
2022/02/28 Java/Android
Django框架中表单的用法
2022/06/10 Python