php openssl 生成公私钥,根据网上文章整理的

时间:2022-08-25 23:36:21

linux下没有问题,win下有报错

<?php
$configargs = array(
"config" => "/usr/local/php/ext/openssl/tests/openssl.cnf",
"digest_alg" => "md5",
"private_key_bits" => 4096,
"private_key_type" => OPENSSL_KEYTYPE_RSA,
// 'digest_alg' => 'md5',
//     'x509_extensions' => 'v3_ca',
//     'req_extensions'   => 'v3_req',
//     'private_key_bits' => 666,
//     'private_key_type' => OPENSSL_KEYTYPE_RSA,
//     'encrypt_key' => false,
);
//$res = openssl_pkey_new();
$res = openssl_pkey_new($configargs);
// Get private key
openssl_pkey_export($res, $privkey, '', $configargs);
echo $privkey;
echo "<br>";
echo "<br>";
// Get public key
$pubkey = openssl_pkey_get_details($res);
$pubkey = $pubkey["key"];
echo $pubkey;
echo "<br>";
echo "<br>";
// $res = openssl_pkey_get_private($privkey);
// if (openssl_sign('hello', $out, $res))
// echo base64_encode($out);

$pi_key =  openssl_pkey_get_private($privkey);//这个函数可用来判断私钥是否是可用的,可用返回资源id Resource id  
$pu_key = openssl_pkey_get_public($pubkey);//这个函数可用来判断公钥是否是可用的

$data = "test data";//原始数据  
    $encrypted = "";   
    $decrypted = "";   
      
    echo "source data:",$data,"\n";  
      
    echo "private key encrypt:\n";  
      
    openssl_private_encrypt($data,$encrypted,$pi_key);//私钥加密  
    $encrypted = base64_encode($encrypted);//加密后的内容通常含有特殊字符,需要编码转换下,在网络间通过url传输时要注意base64编码是否是url安全的  
    echo $encrypted,"\n";  
      
    echo "public key decrypt:\n";  
      
    openssl_public_decrypt(base64_decode($encrypted),$decrypted,$pu_key);//私钥加密的内容通过公钥可用解密出来  
    echo $decrypted,"\n";  
      
    echo "---------------------------------------\n";  
    echo "public key encrypt:\n";  
      
    openssl_public_encrypt($data,$encrypted,$pu_key);//公钥加密  
    $encrypted = base64_encode($encrypted);  
    echo $encrypted,"\n";  
      
    echo "private key decrypt:\n";  
    openssl_private_decrypt(base64_decode($encrypted),$decrypted,$pi_key);//私钥解密  
    echo $decrypted,"\n"; 
?>

php openssl 生成公私钥,根据网上文章整理的的更多相关文章

  1. 搭建基于hyperledger fabric的联盟社区(三) --生成公私钥证书及配置文件

    一.生成公私钥和证书 Fabric中有两种类型的公私钥和证书,一种是给节点之前通讯安全而准备的TLS证书,另一种是用户登录和权限控制的用户证书.这些证书本来应该是由CA来颁发,但是目前只有两个社区,所 ...

  2. linux命令生成公私钥

    生成原始rsa私钥文件: openssl genrsa -out rsa_private_key.pem 1024 将原始的rsa私钥转换未pkcs8格式(即生成私钥文件): openssl pkcs ...

  3. ssh-keygen生成公私钥免密码登录远程服务器

    1.终端输入命令:ssh-keygen -t rsa ssh-keygen命令专门是用来生成密钥的.该命令有很多选项,这里列出了最基本的四个: -t 用来指定密钥类型(dsa | ecdsa | ed ...

  4. SecureCRT系列:生成公私钥

    SecureCRT下载地址:http://www.portablesoft.org/securecrt-securefx-legacy-versions/1.打开我们的SecureCRT客户端,点击t ...

  5. Java生成公私钥对

    public static synchronized KeyPair generateRSAKeyPair(int keysize, BigInteger publicExponent) { try ...

  6. openssl操作公私钥和加解密的一些常用命令

    生成公私钥实践: 生成私钥,这里以椭圆曲线secp256k1为例: openssl ecparam -name secp256k1 -genkey -out secp256k1-priv.pem #带 ...

  7. OpenSSL的证书&comma; 私钥和签名请求&lpar;CSRs&rpar;

    概述 OpenSSL是一个多用途的工具, 适用于涉及Public Key Infrastructure(PKI), HTTPS(HTTP over TLS)的用途. 这份文档提供关于OpenSSL命令 ...

  8. &period;net core中使用openssl的公钥私钥进行加解密

    这篇博文分享的是 C#中使用OpenSSL的公钥加密/私钥解密 一文中的解决方法在 .net core 中的改进.之前的博文针对的是 .NET Framework ,加解密用的是 RSACryptoS ...

  9. OPENSSL中RSA私钥文件(PEM格式)解析【一】

    http://blog.sina.com.cn/s/blog_4fcd1ea30100yh4s.html 在PKCS#1 RSA算法标准中定义RSA私钥语法为: RSAPrivateKey ::= S ...

随机推荐

  1. Selenium2Library系列 keywords 之 &lowbar;SelectElementKeywords

    # 公有方法 (1)get_list_items(self, locator)  返回labels集合 _get_select_list_options(self, select_list_or_lo ...

  2. 使用代理下载Android SDK

    hx.gy:1080是红杏公益服务器,方便科学工作者访问一些常用的科学网站. 在Android SDK Manager中选择[Tools]->[Options],如下设置: HTTP Proxy ...

  3. &lbrack;转&rsqb; 「指尖上的魔法」 - 谈谈 React Native 中的手势

    http://gold.xitu.io/entry/55fa202960b28497519db23f React-Native是一款由Facebook开发并开源的框架,主要卖点是使用JavaScrip ...

  4. (转载)小课堂UI-有关配色的一个小技巧

  5. 将String类型的二维数组中的元素用FileOutputStream的write方法生成一个文件

      将String类型的二维数组中的元素用FileOutputStream的write方法生成一个文件import java.io.File;import java.io.FileOutputStre ...

  6. Android在发送带有附件的邮件

    准备好工作了-下载最新的版本号JMail https://java.net/projects/javamail/pages/Home#Download_JavaMail_1.5.2_Release h ...

  7. 36.中国特色*的*中有这样的现象:地方省*要坚持党的领导和按 照国务院的指示进行安全生产。请编写一个java应用程序描述上述的*现象。 要求如下: (1)该应用程序中有一个&OpenCurlyDoubleQuote;党*”接口:CentralPartyCommittee,该接口中 有个&OpenCurlyDoubleQuote;坚持党的领导”方法:void partyLeader&lpar;&rpar; (2)该应用程序中有一个&OpenCurlyDoubleQuote;国务院”抽象类:StateCouncil,该抽象类中有

    //接口:CentralPartyCommittee package jieKou; public interface CentralPartyCommittee { void partyLeader ...

  8. Spring&plus;Quartz集群环境下定时调度的解决方案

    集群环境可能出现的问题 在上一篇博客我们介绍了如何在自己的项目中从无到有的添加了Quartz定时调度引擎,其实就是一个Quartz 和Spring的整合过程,很容易实现,但是我们现在企业中项目通常都是 ...

  9. UE4 日志

    第一种 输出在控制台中,需要在启动之后的游戏窗口中点击~以打开控制台,然后输入showlog,这时候会弹出一个cmd日志窗口.在程序中使用代码 UE_LOG(LogTemp, Warning, TEX ...

  10. &lbrack;Jenkins&rsqb;执行SoapUI脚本,怎样在邮件内容里面嵌入html

    在Editable Email Notification的Default Content里面加入这样一段: ${FILE,path="result-output/overview-summa ...