建立个人品牌,把你的名字变成钱 [登录·注册]

吕滔博客

首页 开发 运维 工具 摄影

PHP中使用OpenSSL生成证书及加密解密

开发 memory发布于December 22, 2016 标签: PHP

依赖于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);
}

相关推荐

添加新评论

全部评论:已有 3 条评论

jarjar

jarjar2016-12-28 11:19:45 回复

博主的java站好快啊

memory

memory2016-12-28 11:42:15 回复

我这个站不是java写的哟~~~这是typecho开源博客程序改了些功能....

凯哥自媒体

凯哥自媒体2016-12-27 11:23:18 回复

这个挺不错的

网站状态

  • 栏目分类:35个
  • 发布文章:1109篇
  • 用户评论:620条

最新回复

  • 香港服务器: 很详细,学习了
  • memory: 对,这个密钥最好是自己换一下。当然不嫌麻烦甚至可以考虑将密钥做到...
  • 小明明: 在加密的时候 秘钥固定不就可以机密了吗
  • 上海代理记账: 看起来代码有一些复杂的呀。。。
  • 香港云服务器: 站长不错,不错的干货
  • yet handsome: 我看了你的这个发现历史真的是惊人的相似,我们已经做到redis集...
  • memory: 好久不玩它们了,我的相关知识来自谷歌...
  • 于小鱼: 你好,想请教一些关于xen和kvm的问题。
  • memory: 如果将图片 base64_encode 后,再想取回以前的路径不...
  • 陈凌风: 我要区正常的路径显示怎么办?
  • genuiner: 牛逼
  • haitongz: 赞
  • memory: php64位? 这个我还真没有注意。。。回头再试试
  • Kngstr: 这个很简单,你用的PHP不是64位的,64位的dll只能在64位...
  • memory: 使用的是typecho.
  • GavinHsueh: 您好,我了解下您的博客是自己开发的么?看着很不错
  • 个人博客: 看看先
  • memory: 谢谢,已修正。
  • jrotty: 方法一中next后面少个'符号
  • daxia: mark