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生成月历代码
Jun 14 PHP
php设计模式 State (状态模式)
Jun 26 PHP
解析php php_openssl.dll的作用
Jul 01 PHP
PHP中的str_repeat函数在JavaScript中的实现
Sep 16 PHP
CMS中PHP判断系统是否已经安装的方法示例
Jul 26 PHP
PHP遍历XML文档所有节点的方法
Mar 12 PHP
Thinkphp关闭缓存的方法
Jun 26 PHP
round robin权重轮循算法php实现代码
May 28 PHP
thinkPHP线上自动加载异常与修复方法实例分析
Dec 01 PHP
php curl常用的5个经典例子
Jan 20 PHP
PHP实现微信申请退款功能
Oct 01 PHP
PHP程序员简单的开展服务治理架构操作详解(三)
May 14 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
ftp类(myftp.php)
2006/10/09 PHP
Discuz 模板语句分析及知识技巧
2009/08/21 PHP
thinkPHP连接sqlite3数据库的实现方法(附Thinkphp代码生成器下载)
2016/05/27 PHP
laravel学习教程之关联模型
2016/07/30 PHP
php注册系统和使用Xajax即时验证用户名是否被占用
2017/08/31 PHP
js日期、星座的级联显示代码
2014/01/23 Javascript
Javascript中call,apply,bind方法的详解与总结
2016/12/12 Javascript
Javascript oop设计模式 面向对象编程简单实例介绍
2016/12/13 Javascript
Angular2使用jQuery的方法教程
2017/05/28 jQuery
微信小程序获取微信运动步数的实例代码
2017/07/20 Javascript
seajs模块压缩问题与解决方法实例分析
2017/10/10 Javascript
利用ES6实现单例模式及其应用详解
2017/12/09 Javascript
vue2.0 根据状态值进行样式的改变展示方法
2018/03/13 Javascript
vue.js将时间戳转化为日期格式的实现代码
2018/06/05 Javascript
移动端自适应flexible.js的使用方法(不用三大框架,仅写一个单html页面使用)推荐
2019/04/02 Javascript
vue 实现滚动到底部翻页效果(pc端)
2019/07/31 Javascript
js实现图片跟随鼠标移动效果
2019/10/16 Javascript
vue中echarts引入中国地图的案例
2020/07/28 Javascript
在js文件中引入(调用)另一个js文件的三种方法
2020/09/11 Javascript
python 实现堆排序算法代码
2012/06/05 Python
9种python web 程序的部署方式小结
2014/06/30 Python
记录Django开发心得
2014/07/16 Python
Python实现的多线程端口扫描工具分享
2015/01/21 Python
使用PyInstaller将Python程序文件转换为可执行程序文件
2016/07/08 Python
好的Python培训机构应该具备哪些条件
2018/05/23 Python
Python实现随机创建电话号码的方法示例
2018/12/07 Python
Django 静态文件配置过程详解
2019/07/23 Python
Python PyInstaller库基本使用方法分析
2019/12/12 Python
python实现信号时域统计特征提取代码
2020/02/26 Python
Django视图类型总结
2021/02/17 Python
HTML5在微信内置浏览器下右上角菜单的调整字体导致页面显示错乱的问题
2021/01/19 HTML / CSS
Annoushka英国官网:英国奢侈珠宝品牌
2018/10/20 全球购物
高校教师思想汇报
2014/01/11 职场文书
市场营销工作计划书
2014/05/06 职场文书
交通安全主题班会
2015/08/12 职场文书
导游词之河北野三坡
2019/12/11 职场文书