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聊天室技术
Oct 09 PHP
Windows中安装Apache2和PHP4权威指南
Nov 18 PHP
7个超级实用的PHP代码片段
Jul 11 PHP
php防止伪造数据从地址栏URL提交的方法
Aug 24 PHP
PHP实现算式验证码和汉字验证码实例
Mar 09 PHP
PHP使用pear自带的mail类库发邮件的方法
Jul 08 PHP
PHP读取配置文件类实例(可读取ini,yaml,xml等)
Jul 28 PHP
PHP+Mysql+jQuery文件下载次数统计实例讲解
Oct 10 PHP
php的mail函数发送UTF-8编码中文邮件时标题乱码的解决办法
Oct 20 PHP
PHP 自动加载的简单实现(推荐)
Aug 12 PHP
phpStudy配置多站点多域名方法及遇到的403错误解决方法
Oct 19 PHP
Thinkphp5框架实现图片、音频和视频文件的上传功能详解
Aug 27 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运算符
2006/10/09 PHP
php获得网站访问统计信息类Compete API用法实例
2015/04/02 PHP
linux平台编译安装PHP7并安装Redis扩展与Swoole扩展实例教程
2016/09/30 PHP
PHP读取zip文件的方法示例
2016/11/17 PHP
PHP严重致命错误处理:php Fatal error: Cannot redeclare class or function
2017/02/05 PHP
总结PHP内存释放以及垃圾回收
2018/03/29 PHP
php 使用mpdf实现指定字段配置字体样式的方法
2019/07/29 PHP
PHP使用POP3读取邮箱接收邮件的示例代码
2020/07/08 PHP
Mozilla中显示textarea中选择的文字
2006/09/07 Javascript
基于jquery实现的鼠标拖拽元素复制并写入效果
2011/08/23 Javascript
Jquery操作radio的简单实例
2014/01/06 Javascript
JS实现的鼠标跟随代码(卡通手型点击效果)
2015/10/26 Javascript
JS中如何实现点击a标签返回页面顶部的问题
2017/01/19 Javascript
jQuery获取table表中的td标签(实例讲解)
2017/07/28 jQuery
JS数组交集、并集、差集的示例代码
2017/08/23 Javascript
vue .sync修饰符的使用详解
2018/06/15 Javascript
详解node.js的http模块实例演示
2018/07/12 Javascript
Vue文件配置全局变量的实例
2018/09/06 Javascript
深入理解react-router 路由的实现原理
2018/09/26 Javascript
jquery.pagination.js分页使用教程
2018/10/23 jQuery
layui表格 返回的数据状态异常的解决方法
2019/09/10 Javascript
零基础写python爬虫之爬虫的定义及URL构成
2014/11/04 Python
Python命令行参数解析模块getopt使用实例
2015/04/13 Python
python3 requests中使用ip代理池随机生成ip的实例
2018/05/07 Python
python实现一组典型数据格式转换
2018/12/15 Python
利用python修改json文件的value方法
2018/12/31 Python
jenkins+python自动化测试持续集成教程
2020/05/12 Python
Python生成随机验证码代码实例解析
2020/06/09 Python
python简单利用字典破解zip文件口令
2020/09/07 Python
CSS3制作圆角图片和椭圆形图片
2016/07/08 HTML / CSS
医校毕业生自我鉴定
2014/01/25 职场文书
让生命充满爱演讲稿
2014/05/10 职场文书
2014幼儿园保育员工作总结
2014/11/10 职场文书
介绍信如何写
2015/01/31 职场文书
国庆庆典邀请函
2015/02/02 职场文书
法学专业求职信范文
2015/03/19 职场文书