PHP Openssl 生成公钥私钥 RSA公约私钥加密解密示例

<?php
//配置信息
$dn = array(
    "countryName" => "GB",
    "stateOrProvinceName" => "SomeWhoami",
    "localityName" => "Whoami",
    "organizationName" => "The Room Whoami",
    "organizationalUnitName" => "PHP Documentation Team",
    "commonName" => "Whoami",
    "emailAddress" => "Whoami@example.com"
);

$config = array(
    "private_key_bits" => 512, //指定应该使用多少位来生成私钥  512 1024  2048  4096等
    "private_key_type" => OPENSSL_KEYTYPE_RSA, //选择在创建CSR时应该使用哪些扩展。可选值有 OPENSSL_KEYTYPE_DSA, OPENSSL_KEYTYPE_DH, OPENSSL_KEYTYPE_RSA 或 OPENSSL_KEYTYPE_EC. 默认值是 OPENSSL_KEYTYPE_RSA.
);
 //    生成证书
 $privkey = openssl_pkey_new($config);
 $csr = openssl_csr_new($dn, $privkey);
 $sscert = openssl_csr_sign($csr, null, $privkey, $numberofdays);
 //    导出证书$csrkey
 openssl_x509_export($sscert, $csrkey);
 //    导出密钥$privatekey
 openssl_pkcs12_export($sscert, $privatekey, $privkey, $privkeypass);
 //    获取私钥
 openssl_pkcs12_read($privatekey, $certs, $privkeypass);
 if (empty($certs['pkey'])) {
          $arr = array();
    }
 $prikeyid = $certs['pkey'];
 //    获取公钥
  $pub_key = openssl_pkey_get_public($csrkey);
  $keyData = openssl_pkey_get_details($pub_key);
  if (empty($keyData['key'])) {
         $arr = array();
    }
  $public = $keyData['key'];
  $arr =  array('publicKey'=>$public,'privateKey'=>$prikeyid);
  print_r($arr);
?>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值