PHP通过OpenSSL生成证书、密钥并且加密解密数据

2023-11-04

转自:http://www.open-open.com/code/view/1421032678562/

generate.php

    <?php  
    $dn = array(  
        "countryName" => 'XX', //所在国家名称  
        "stateOrProvinceName" => 'State', //所在省份名称  
        "localityName" => 'SomewhereCity', //所在城市名称  
        "organizationName" => 'MySelf',   //注册人姓名  
        "organizationalUnitName" => 'Whatever', //组织名称  
        "commonName" => 'mySelf', //公共名称  
        "emailAddress" => 'user@domain.com' //邮箱  
    );  
      
    $privkeypass = '111111'; //私钥密码  
    $numberofdays = 365;     //有效时长  
    $cerpath = "./test.cer"; //生成证书路径  
    $pfxpath = "./test.pfx"; //密钥文件路径  
      
      
    //生成证书  
    $privkey = openssl_pkey_new();  
    $csr = openssl_csr_new($dn, $privkey);  
    $sscert = openssl_csr_sign($csr, null, $privkey, $numberofdays);  
    openssl_x509_export($sscert, $csrkey); //导出证书$csrkey  
    openssl_pkcs12_export($sscert, $privatekey, $privkey, $privkeypass); //导出密钥$privatekey  
    //生成证书文件  
    $fp = fopen($cerpath, "w");  
    fwrite($fp, $csrkey);  
    fclose($fp);  
    //生成密钥文件  
    $fp = fopen($pfxpath, "w");  
    fwrite($fp, $privatekey);  
    fclose($fp);  
    ?>  

crypt.php
    <?php  
    $privkeypass = '111111'; //私钥密码  
    $pfxpath = "./test.pfx"; //密钥文件路径  
    $priv_key = file_get_contents($pfxpath); //获取密钥文件内容  
    $data = "test"; //加密数据测试test  
      
    //私钥加密  
    openssl_pkcs12_read($priv_key, $certs, $privkeypass); //读取公钥、私钥  
    $prikeyid = $certs['pkey']; //私钥  
    openssl_sign($data, $signMsg, $prikeyid,OPENSSL_ALGO_SHA1); //注册生成加密信息  
    $signMsg = base64_encode($signMsg); //base64转码加密信息  
      
      
    //公钥解密  
    $unsignMsg=base64_decode($signMsg);//base64解码加密信息  
    openssl_pkcs12_read($priv_key, $certs, $privkeypass); //读取公钥、私钥  
    $pubkeyid = $certs['cert']; //公钥  
    $res = openssl_verify($data, $unsignMsg, $pubkeyid); //验证  
    echo $res; //输出验证结果,1:验证成功,0:验证失败  
    ?>  
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHP通过OpenSSL生成证书、密钥并且加密解密数据 的相关文章

  • Doctrine EntityManager 清除嵌套实体中的方法

    我想用学说批量插入处理 http doctrine orm readthedocs org en latest reference batch processing html为了优化大量实体的插入 问题出在 Clear 方法上 它表示此方法
  • CURL 中的 data-urlencode 是什么意思?

    我搜索了很多个小时试图弄清楚 php curl 中的 data urlencode 是什么 我尝试过这个 但我认为这是不对的 xmlpost object1 file https www lob com goblue pdf 在文档中是 d
  • 简单的 PHP 表单:电子邮件附件(代码 Golf)

    想象一下 一个用户想要在其网站上放置一个表单 该表单将允许网站访问者上传一个文件和一条简单的消息 该消息将立即通过电子邮件发送 即 该文件未存储在服务器上 或者如果该文件存储在服务器上 仅暂时 作为文件附件 并在邮件正文中添加注释 查看更多
  • PHP 如何再次传输 mp3 流

    我正在尝试从 http 的无线电流 MP3 获取数据 并希望以 https 的形式将其流式传输 这是我尝试过的
  • 如何将 php curl 中的 cookie 获取到变量中

    因此 其他公司的一些人认为 如果不使用soap xml rpc rest 或任何其他合理的通信协议 而是将所有响应作为cookie 嵌入标头中 那就太棒了 我需要从这个卷曲响应中将这些 cookie 作为数组取出 如果我不得不为此浪费大量的
  • 替换多余的空格

    我需要从应用程序中的玩家用户名中删除多余的空格 字母之间不止一次空格 并将其替换为单个空格 我不介意用户有一个空格 但我需要删除彼此相邻的多个空格 目前我是这样实现的 replace array array fill array array
  • 基于mysql表中唯一电子邮件地址的唯一代码?

    我有一个 mysql 表 它将存储用户电子邮件地址 每个地址都是唯一的 并且是主字段 和时间戳 我添加了另一列名为 unique code varchar 64 utf8 unicode ci 我非常感谢您提供的帮助 a 生成5位字母数字代
  • 从前端更改记录顺序

    我在编写下一个功能时遇到问题 我希望用户能够重新排列记录并更改 display order 值 我使用 Jquery UI 的可拖放功能来促进这一点 我可以看到如何简单地交换 display order 值 但我想为一条记录设置一个显示顺序
  • 使用哪个正则表达式将此字符串转换为数组?

    从 mysql 中的地理空间列我得到以下字符串值 我想将其转换为数组 最终目标是将其转换为 geoJSON POLYGON 4 885838 52 388063 4 891061 52 388381 4 890973 52 382909 该
  • 第一个选项为空的选择框

    如何将选择框中的第一个选项设置为空值 我正在从数据库获取数据 我想将选项默认设置为 请选择一个选项 我找到 default gt Please select 不适用于 HTML5 必需属性 这确实有效 listOfValues 1 gt C
  • 创建一个基于简单文本文件的搜索引擎

    我需要尽快创建一个基于简单文本文件的搜索引擎 使用 PHP 基本上它必须读取目录中的文件 删除停止词和无用词 为每个剩余的有用词及其在每个文档中出现的次数建立索引 我猜这个的伪代码是 for each file in directory r
  • 当控制器类扩展父控制器时,为什么我们仍然需要父构造函数?

    我是 CodeIgniter 和 OOP 的初学者 我正在读一页 CI 教程here http ellislab com codeigniter user guide tutorial news section html 我发现了一些让我产
  • 将 NULL 变量插入数据库

    我将变量设置为 NULL 我试图将其插入数据库 但由于某种原因 它们一直以 0 的形式提交 我确信我试图插入的列允许 NULL 并且默认值设置为 NULL 这是我的代码 insert NULL query mysql query INSER
  • 如何使用具有比较标准的 findBy 方法

    我需要使用使用比较标准 不仅仅是精确标准 的 神奇查找器 findBy 方法 换句话说 我需要做这样的事情 result purchases repository gt findBy array prize gt gt 200 这样我就可以
  • 如何在 Kohana 中包装 PHP 遗留代码?

    我有大量用 PHP 编写的遗留代码 这些代码不是在任何特定框架上编写的 而是主要是老式风格 即内联 PHP 然而 我的大部分新代码都是在 Kohana 3 1 X 框架上编写的 尽管 Kohana 确实允许遗留代码和 Kohana 文件在同
  • CodeIgniter 路由问题以访问前端和后端文件夹

    我正在使用 CodeIgniter 我在控制器和视图中有前端和后端文件夹 我尝试了服务器步骤甚至检查了几乎所有解决方案 但我仍然无法访问它我的默认控制器 路线 php route default controller frontend Us
  • 依赖注入容器什么时候会变得太大,我该怎么办?

    我们都知道为什么依赖注入很棒因为它使代码耦合更少 更容易测试 并且更容易阅读 然后有些人决定使用依赖注入容器 like pimple http pimple sensiolabs org PHP 可以协助依赖倒置 http en wikip
  • “完整性约束违规:1062 重复条目” - 但没有重复行

    我正在将应用程序从本机 mysqli 调用转换为 PDO 尝试将行插入具有外键约束的表时遇到错误 Note 这是一个简化的测试用例 不应复制 粘贴到生产环境中 InfoPHP 5 3 MySQL 5 4 首先 这是表格 CREATE TAB
  • 未找到 mysqli 类

    我用过mysqli连接到我的应用程序中的数据库 几天前一直运行良好 突然出现以下错误 致命错误 找不到类 mysqli 我用来连接数据库的行是 link new mysqli localhost uname password scripts
  • 使用 ActiveRecord 和 Yii2 记录实际的 SQL 查询?

    我正在这样做 students Student find gt all return this gt render process array students gt students 然后在视图中 foreach students as

随机推荐