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 mb_convert_encoding 获取字符串编码类型实现代码
Apr 26 PHP
PHP中HTML标签过滤技巧
Jan 07 PHP
CodeIgniter模板引擎使用实例
Jul 15 PHP
php中删除数组的第一个元素和最后一个元素的函数
Mar 07 PHP
PHP Ajax实现无刷新附件上传
Aug 17 PHP
php外部执行命令函数用法小结
Oct 11 PHP
[原创]php集成安装包wampserver修改密码后phpmyadmin无法登陆的解决方法
Nov 23 PHP
PHP使用Curl实现模拟登录及抓取数据功能示例
Apr 27 PHP
laravel清除视图缓存的代码
Oct 23 PHP
laravel返回统一格式错误码问题
Nov 04 PHP
php实现快速对二维数组某一列进行组装的方法小结
Dec 04 PHP
PHP实现简单的协程任务调度demo示例
Feb 01 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获取当前时间的毫秒数的方法
2014/01/26 PHP
使用PHPMailer实现邮件发送代码分享
2014/10/23 PHP
Extjs TimeField 显示正常时间格式的代码
2011/06/28 Javascript
JQuery获取浏览器窗口内容部分高度的代码
2012/02/24 Javascript
对比分析json及XML
2014/11/28 Javascript
jQuery实现文件上传进度条特效
2015/08/12 Javascript
快速解决js开发下拉框中blur与click冲突
2016/10/10 Javascript
AngularJS用户选择器指令实例分析
2016/11/04 Javascript
Angular.JS中指令ng-if的注意事项小结
2017/06/21 Javascript
利用JS判断客户端类型你应该知道的四种方法
2017/12/22 Javascript
Node.js Express安装与使用教程
2018/05/11 Javascript
使用konva和vue-konva库实现拖拽滑块验证功能
2020/04/27 Javascript
原生js+canvas实现贪吃蛇效果
2020/08/02 Javascript
[15:15]教你分分钟做大人:狙击手
2014/10/30 DOTA
Python3实现从指定路径查找文件的方法
2015/05/22 Python
举例讲解Python面相对象编程中对象的属性与类的方法
2016/01/19 Python
django从请求到响应的过程深入讲解
2018/08/01 Python
对python中xlsx,csv以及json文件的相互转化方法详解
2018/12/25 Python
基于python实现KNN分类算法
2020/04/23 Python
python实现文本进度条 程序进度条 加载进度条 单行刷新功能
2019/07/03 Python
Python 二叉树的层序建立与三种遍历实现详解
2019/07/29 Python
tensorflow dataset.shuffle、dataset.batch、dataset.repeat顺序区别详解
2020/06/03 Python
Python学习之路安装pycharm的教程详解
2020/06/17 Python
美国高品质个性化珠宝销售网站:Jewlr
2018/05/03 全球购物
SportsDirect.com马来西亚:英国第一体育零售商
2018/11/21 全球购物
电气专业推荐信范文
2013/11/18 职场文书
简单而又朴实的个人求职信分享
2013/12/12 职场文书
小学信息技术教学反思
2014/02/10 职场文书
《跨越海峡的生命桥》教学反思
2014/02/24 职场文书
2014庆六一活动方案
2014/03/02 职场文书
副董事长岗位职责
2014/04/02 职场文书
小学生运动会报道稿
2014/09/12 职场文书
python3 删除所有自定义变量的操作
2021/04/08 Python
聊聊golang中多个defer的执行顺序
2021/05/08 Golang
Android Flutter实现图片滑动切换效果
2022/04/07 Java/Android
python和anaconda的区别
2022/05/06 Python