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 fputcsv命令 写csv文件遇到的小问题(多维数组连接符)
May 24 PHP
PHP设计模式 注册表模式(多个类的注册)
Feb 05 PHP
控制PHP的输出:缓存并压缩动态页面
Jun 11 PHP
PHP strip_tags()去除HTML、XML以及PHP的标签介绍
Feb 18 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(九)
Jun 24 PHP
php源码分析之DZX1.5随机数函数random用法
Jun 17 PHP
WordPress中获取指定分类及其子分类下的文章数目
Dec 31 PHP
php使用pear_smtp发送邮件
Apr 15 PHP
PHP生成唯一ID之SnowFlake算法
Dec 17 PHP
PHP操作MySQL中BLOB字段的方法示例【存储文本与图片】
Sep 15 PHP
Laravel 关联模型-关联新增和关联更新的方法
Oct 10 PHP
PHP 对接美团大众点评团购券(门票)的开发步骤
Apr 03 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
destoon供应信息title调用出公司名称的方法
2014/08/22 PHP
Yii查询生成器(Query Builder)用法实例教程
2014/09/04 PHP
php中preg_match的isU代表什么意思
2015/10/01 PHP
Yii框架模拟组件调用注入示例
2019/11/11 PHP
JavaScript之自定义类型
2012/05/04 Javascript
JQuery each()函数如何优化循环DOM结构的性能
2012/12/10 Javascript
表单的焦点顺序tabindex和对应enter键提交
2013/01/04 Javascript
jQuery布局插件UI Layout简介及使用方法
2013/04/03 Javascript
浅谈JS中的bind方法与函数柯里化
2016/08/10 Javascript
微信小程序 图片边框解决方法
2017/01/16 Javascript
webpack使用 babel-loader 转换 ES6代码示例
2017/08/21 Javascript
JQuery EasyUI 结合ztrIee的后台页面开发实例
2017/09/01 jQuery
Angular搜索 过滤 批量删除 添加 表单验证功能集锦(实例代码)
2017/10/25 Javascript
浅析node.js的模块加载机制
2018/05/25 Javascript
jquery使用FormData实现异步上传文件
2018/10/25 jQuery
js中null与空字符串""的区别讲解
2019/01/17 Javascript
JavaScript中的回调函数实例讲解
2019/01/27 Javascript
Javascript迭代、递推、穷举、递归常用算法实例讲解
2019/02/01 Javascript
小程序数据通信方法大全(推荐)
2019/04/15 Javascript
javascript History对象原理解析
2020/02/17 Javascript
[02:07]TI9显影之尘系列 - Vici Gaming
2019/08/20 DOTA
Python随机生成一个6位的验证码代码分享
2015/03/24 Python
Python中.join()和os.path.join()两个函数的用法详解
2018/06/11 Python
对python中array.sum(axis=?)的用法介绍
2018/06/28 Python
不知道这5种下划线的含义,你就不算真的会Python!
2018/10/09 Python
如何在Django中添加没有微秒的 DateTimeField 属性详解
2019/01/30 Python
pygame实现俄罗斯方块游戏(AI篇1)
2019/10/29 Python
利用python实现凯撒密码加解密功能
2020/03/31 Python
python上下文管理器异常问题解决方法
2021/02/07 Python
python利用opencv实现颜色检测
2021/02/23 Python
会计学生自我鉴定
2014/02/06 职场文书
2014最新自愿离婚协议书范本
2014/11/19 职场文书
校园新闻稿范文
2015/07/18 职场文书
2016年10月份红领巾广播稿
2015/12/21 职场文书
HAM-2000摩机图
2021/04/22 无线电
Python使用BeautifulSoup4修改网页内容
2022/05/20 Python