博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
公钥私钥加密解密
阅读量:5009 次
发布时间:2019-06-12

本文共 1679 字,大约阅读时间需要 5 分钟。

加密的内容长度限制为密钥长度少11位,如128位的密钥最多加密的内容为117个长度。

  公钥加密

    $public_content=file_get_contents(公钥路径);
    $public_key=openssl_get_publickey($public_content);
    
    $original_str='待加密的内容';
    $original_arr=str_split($original_str,117);  //折分
    foreach($original_arr as $o)
    {
      $sub_enc=null;
      openssl_public_encrypt($o,$sub_enc,$public_key);
      $original_enc_arr[]=$sub_enc;
    }
    openssl_free_key($public_key);
    $original_enc_str=base64_encode(implode('',$original_enc_arr));//最终网络传的密文
  私钥解密
    $private_content=file_get_contents(私钥路径);
    $private_key=openssl_get_privatekey($private_content);
    $original_enc_str=base64_decode(密文);
    $orig_dec_str='';
    for($i=0;$i<strlen($original_enc_str)/128;$i++)
    {
       $data=substr($original_enc_str,$i*128,128);
       openssl_private_decrypt($data,$decrypt,$private_key);
       $orig_dec_str.=$decrypt;
    }
    $orig_dec_str为最后解密出来的。

  注:私钥加密及公钥解密同理。

-----------------------------------------------------------------------------------------------------------------------
  私钥签名
    $private_content=file_get_contents(私钥路径);
    $private_key=openssl_get_privatekey($private_content);

    $original_str='';//原数据

    openssl_sign($original_str,$sign,$private_key);
    openssl_free_key($private_key);
    $sign=base64_encode($sign);//最终的签名    

  公钥验签

    $public_content=file_get_contents(公钥路径);
    $public_key=openssl_get_publickey($public_content);

    $sign=base64_decode($sign)'';//得到的签名

    $original_str='';得到的数据
    $result=(bool)openssl_verify($original_str,$sign,$public_key);
    openssl_free_key($public_key);
    $result为真时签验通过,假时未通过

转载于:https://www.cnblogs.com/echoecho/p/8948539.html

你可能感兴趣的文章
c++ primer读书笔记之c++11(一)
查看>>
【题目】英文字符进行频率的统计,直方图输出
查看>>
php最新变异一句话
查看>>
LeetCode-Binary Tree Level Order Traversal
查看>>
COM组件开发实践
查看>>
yii2 源码分析1从入口开始
查看>>
浅谈网站推广
查看>>
Away3D基础之摄像机
查看>>
Leetcode 128. Longest Consecutive Sequence
查看>>
程序员必须知道的几个Git代码托管平台
查看>>
导电塑料入梦来
查看>>
C# 线程手册 第五章 扩展多线程应用程序 - 什么是线程池
查看>>
笔记1126ASP.NET面试题(转)
查看>>
自签证书脚本
查看>>
考研路茫茫--单词情结 - HDU 2243(AC自动机+矩阵乘法)
查看>>
关于zepto在chrome中触发两次的解决方案
查看>>
PAT (Basic Level) Practise:1010. 一元多项式求导
查看>>
centos7 mysql数据库安装和配置
查看>>
iframe显示滚动条
查看>>
makefile中":=","=","?=","+="
查看>>