php openssl 生成公私钥,根据网上文章整理的
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 生成公私钥,根据网上文章整理的的更多相关文章
- 搭建基于hyperledger fabric的联盟社区(三) --生成公私钥证书及配置文件
一.生成公私钥和证书 Fabric中有两种类型的公私钥和证书,一种是给节点之前通讯安全而准备的TLS证书,另一种是用户登录和权限控制的用户证书.这些证书本来应该是由CA来颁发,但是目前只有两个社区,所 ...
- linux命令生成公私钥
生成原始rsa私钥文件: openssl genrsa -out rsa_private_key.pem 1024 将原始的rsa私钥转换未pkcs8格式(即生成私钥文件): openssl pkcs ...
- ssh-keygen生成公私钥免密码登录远程服务器
1.终端输入命令:ssh-keygen -t rsa ssh-keygen命令专门是用来生成密钥的.该命令有很多选项,这里列出了最基本的四个: -t 用来指定密钥类型(dsa | ecdsa | ed ...
- SecureCRT系列:生成公私钥
SecureCRT下载地址:http://www.portablesoft.org/securecrt-securefx-legacy-versions/1.打开我们的SecureCRT客户端,点击t ...
- Java生成公私钥对
public static synchronized KeyPair generateRSAKeyPair(int keysize, BigInteger publicExponent) { try ...
- openssl操作公私钥和加解密的一些常用命令
生成公私钥实践: 生成私钥,这里以椭圆曲线secp256k1为例: openssl ecparam -name secp256k1 -genkey -out secp256k1-priv.pem #带 ...
- OpenSSL的证书, 私钥和签名请求(CSRs)
概述 OpenSSL是一个多用途的工具, 适用于涉及Public Key Infrastructure(PKI), HTTPS(HTTP over TLS)的用途. 这份文档提供关于OpenSSL命令 ...
- .net core中使用openssl的公钥私钥进行加解密
这篇博文分享的是 C#中使用OpenSSL的公钥加密/私钥解密 一文中的解决方法在 .net core 中的改进.之前的博文针对的是 .NET Framework ,加解密用的是 RSACryptoS ...
- OPENSSL中RSA私钥文件(PEM格式)解析【一】
http://blog.sina.com.cn/s/blog_4fcd1ea30100yh4s.html 在PKCS#1 RSA算法标准中定义RSA私钥语法为: RSAPrivateKey ::= S ...
随机推荐
- DevExpress控件使用小结 z
.TextEditor(barEditItem)取文本 string editValue = barEditItem1.EditValue.ToString(); //错误,返回null string ...
- delphi ole word
源代码如下: //Word打印(声明部分) wDoc,wApp:Variant; function PrnWordBegin(tempDoc,docName:String):boolean; func ...
- ant 安装过程中问题记录
最近在本机安装ant过程中出现一些问题,在此记录一下. 1.Unable to locate tools.jar. Expected to find it in C:/Program Files/Ja ...
- LoadRunner学习记录--Flights打开空白页的问题
从网上查了一下,原因是PERL5LIB这个环境变量的原因. 担心修改环境变量会影响ORACLE的运行 在WebTour中修改run.bat 增加 set PERL5LIB=D:\oracle\pr ...
- NGUI的UIProgressBar使用裁剪方式而不是压缩方式的方法
UIProgressBar默认的方式是压缩图片,而如果我们需要裁减图片,只需要将UIProgressBar的Foreground的UISprite的Type改为Filled就行了. 好几个“的”... ...
- login:用户登陆的意思
login:用户登陆的意思 在思科的设备上有两种登录方式: 一种是本地方式,使用console口: 一种是远程方式(或者叫做网络方式):使用的是telnet等 1.默认情况下,思科的远程访问是禁止的. ...
- J2SE7规范_2013.2_类型_命名
3.1 字面量:包括整型,实型,字符,字符串,布尔,null 整形: 除非后面有个l或L,一般总是int类型 除非是0x,0,0b开头,一般总是十进制 无论什么进制,中间都可以有_,无意义,只是看 ...
- 从零教你在Linux环境下(ubuntu)如何编译hadoop2.4
问题导读: 1.如果获取hadoop src maven包?2.编译hadoop需要装哪些软件?3.如何编译hadoop2.4?扩展:编译hadoop为何安装这些软件? 本文链接 http://ww ...
- 在NodeJS中配置aws ec2
获取access key和secret access key 自己账户下有security credentials的选项 然后点击Acce ...
- 优秀android开源项目与解决方案推荐
后来加上的,因为太强大了,android上百个可立即使用的开源库介绍:https://github.com/Trinea/android-open-project Android上的FTP服务器 S ...