jwt私钥和公钥怎么获取_如何为php-jwt生成密钥对?
我试图使用PHP-JWT生成JWT,但我总是最终收到错误:
PHP Warning: openssl_sign(): supplied key param cannot be coerced into a private key
我已经尝试使用openssl生成密钥对,使用opennssl用密码保护密钥,然后使用openssl_get_privatekey()读取密钥,我尝试将密钥粘贴到php中的多行字符串中(EOT和EOD分隔符).然后,我尝试在示例页面上复制/粘贴键,但仍然出现相同的错误,我在这里遗漏了什么?
不知道这是否可能是一个问题,但是我正在Windows机器上进行开发,然后将其发送到远程服务器,这是一台Linux机器…
编辑:
我如何生成密钥:
openssl genrsa -aes256 -out private.pem 2048
阅读:
openssl_get_privatekey('keys/private.pem','0mrY2mX9NeAb0RmpcoeF');
openssl_get_privatekey('file://'.__DIR__.'/keys/private.pem','0mrY2mX9NeAb0RmpcoeF');
还尝试了:
openssl genrsa -out private.pem 2048
阅读:
file_get_contents('keys/private.pem');
还尝试了内联:
$private_key = <<
-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQCt2WlpqowIDCZj+KCAl6iNEHCZN4FCPF3YrWdhthS2ysjNIjmy
1WjrzWpIk2YhkHmpb/+vFc5Xwv+a4NuB9W+hUw5K6bkgnol2Zak4v0myHR0qZsQP
ot7vj1Od+rU/Nn29rnDkgowcNcnN5MqxPrDOayA1IysXo1hPg73Hq2o40QIDAQAB
AoGAfhfI2zk148hcN/pm/54ARIB+CsM1X4NFVhk/eKGGGKawSgje7JTZSt5sjkNK
umF9vKVdP/KC/SiUGBOrYnFQCvH7CYpG74XQmnKf7JhhTF8t+N6b9SKz7oRsLHXJ
YwDntLTJIMfnFSQe9M9LJTcUUmTkIvDqq4T6L6OfSIQ/UVkCQQDg0xv60l6ELEdQ
J27dTxfs/kG6C1yjkoFU1UnBa6VVF/4PDOaPY7HvGxjZW+i3tj59i01W/OHOwswA
2uGExZ2bAkEAxfTDeOZh3mOaJ34x+W2wXQYwSh37hveiAQDvr21g/vixHHIPwomI
pP6wfLFK/4ApJHKOkB9Ha/bvrVSvhZIgAwJAMNHGtp1txreyuJYHfekJ4f2IGjUT
ZbWPffNes7CDU0oFchE0E5jrb2dr6u8JRrM9OJfCMIxzICmukNT2uZUL1wJBAKd0
cTLBuIKWwR2ta/ry5iEbDhh0moTG0D2HHDrLDSVDHRfSCTDohTYF2SfyFl5ifOs/
GQgj3ZggEQoQPFaCkR8CQQCVVyEBlUum82VDgpV+fBTYxzQo+bs7eWWPn93ebThv
4BVEwAHe7T6mjXwtu5U1iOB5h837aUp9Gc3mWprs/HUr
-----END RSA PRIVATE KEY-----
EOT;
但是我认为问题不在于我如何生成密钥,因为自述文件上的示例对我不起作用
解决方法:
似乎您忘记了从私钥生成(或提取)公钥.
请确保您已完成以下步骤:
1)生成私钥:
openssl genrsa -out private.pem 2048
2)从私钥中提取公钥:
openssl rsa -in private.pem -outform PEM -pubout -out public.pem
3)和示例php代码:
require_once('vendor/autoload.php');
use \Firebase\JWT\JWT;
$privateKey = file_get_contents('./private.pem');
$publicKey = file_get_contents('./public.pem');
$payload = [
'data' => ['field1' => 1, 'field2' => 'string data'],
"iss" => "http://example.org",
"aud" => "http://example.com",
"iat" => 1531498466,
"eat" => 1557000000
];
$token = JWT::encode($payload, $privateKey, 'RS256');
echo "Token:\n" . print_r($token, true) . "\n";
$decoded = JWT::decode($token, $publicKey, ['RS256']);
$decoded_array = (array) $decoded;
echo "Decoded:\n" . print_r($decoded_array, true) . "\n";
奖励:HS256示例
由于HS256是对称算法,因此不需要私钥/公钥对.
您可以使用自己的类似blablabla的随机秘密字符串,而无需使用生成器等:
require_once('vendor/autoload.php');
use \Firebase\JWT\JWT;
$secret = 'blablabla-secret-string';
// or You can save that random text in .jwt-secret file and use this way
// $secret = file_get_contents('./.jwt-secret');
$payload = [
'data' => ['field1' => 1, 'field2' => 'string data'],
"iss" => "http://example.org",
"aud" => "http://example.com",
"iat" => 1531498466,
"eat" => 1557000000
];
$token = JWT::encode($payload, $secret, 'HS256');
echo "HS256 Token:\n" . print_r($token, true) . "\n";
$decoded = JWT::decode($token, $secret, ['HS256']);
$decoded_array = (array) $decoded;
echo "HS256 Token decoded:\n" . print_r($decoded_array, true) . "\n";
标签:jwt,php
来源: https://codeday.me/bug/20191108/2009941.html
jwt私钥和公钥怎么获取_如何为php-jwt生成密钥对?相关推荐
- jwt私钥和公钥怎么获取_公钥与私钥
在对称加密的时代,加密和解密用的是同一个密钥,这个密钥既用于加密,又用于解密.这样做有一个明显的缺点,如果两个人之间传输文件,两个人都要知道密钥,如果是三个人呢,五个人呢?于是就产生了非对称加密,用一 ...
- jwt私钥和公钥怎么获取_jwt 用rsa公钥私钥进行验证(python发送,java接受)
JWT的主要应用场景 身份认证在这种场景下,一旦用户完成了登陆,在接下来的每个请求中包含JWT,可以用来验证用户身份以及对路由,服务和资源的访问权限进行验证.由于它的开销非常小,可以轻松的在不同域名的 ...
- 如何检查私钥和公钥是否配对_如何检查家具是否有臭虫
如果您购买了二手家具,或者家具使用好多年了,那么由于家庭环境等问题,难免会出现臭虫! 臭虫可以通过许多不同的方式进入您的房屋,但是最常见的方法之一是您的二手家具. 关于臭虫 首先,让我们从臭虫入门.这 ...
- 公钥和私钥怎么生成_科普 | Eth2 验证者如何生成和保护取款密钥
来源 | 以太坊爱好者 作者|Jim McDonald责编|晋兆雨 取款密钥是什么? 取款密钥(withdrawal key)是以太坊 2.0 中的验证者用来提现以太币的密钥 [1].以太坊 2.0 ...
- 安卓客户端如何获取支付宝私钥与公钥
项目需要,需要在客户端集成支付宝接口.就研究了一下:因为使用支付宝接口,就需要到支付宝官网:注册帐号,并申请.下面讲的是申请好之后的操作.登录成功之后, 店家我的商家服务-在页面的下方找到--&g ...
- 支付宝获取私钥和公钥
支付宝官网:店家我的商家服务-在页面的下方找到-->签约管理->找打 移动支付-–>点击下载集成文档->跳到新的页面,在页面下方->找到下载开发包,下载移动支付即可.然后 ...
- 移动平台商家支付宝如何获取商户私钥,支付宝公钥。
1.简介 RSA 是一种非对称的签名算法,即签名密钥(私钥)与验签密钥(公钥)是不一样的, 私钥用于签名,公钥用于验签. 在与支付宝交易中,会有 2 对公私钥,即商户私钥,支付宝公钥. 商户公私钥:由 ...
- jwt 私钥_一分钟带你了解JWT认证
一.JWT简介 JSON Web Token(JWT)是一个开放的标准(RFC 7519),它定义了一个紧凑且自包含的方式,用于在各方之间作为JSON对象安全地传输信息.由于此信息是经过数字签名的,因 ...
- java中使用openssl生成的rsa公私钥进行数据加解密_使用openssl生成RSA公钥和私钥对...
在ubuntu上要使用openssl的话需要先进行安装,命令如下: sudo apt-get install openssl 安装完成就可以使用openssl了. 首先需要进入openssl的交互界面 ...
最新文章
- 吴恩达:关于机器学习职业生涯以及阅读论文的一些建议
- python turtle画彩虹-python绘制樱花,彩虹旋等
- jenkins内置变量的使用
- MySQL创建数据表(CREATE TABLE语句)
- 2019 ASP.NET Core 之微调查报告,新鲜出炉
- ssh(Spring+Spring mvc+hibernate)——EmpDaoImpl.java
- 这款Linux 恶意软件正在劫持全球的超级计算机
- url-pattern配置技巧
- android 预优化oat_Android内存优化大盘点
- Clear Type技术
- android today上下卡片,在 Android 手机上看天气,你有这些高颜值、无广告的选择...
- 删除字符串数组中的空字符串
- ca根证书校验 java_JAVA-Android-根据CA证书验证X509Certificate(颁发者证书)
- vue3+ts+element-plus动态图标生成方式
- 企业微信客户端开启调试模式
- 2022-2028年中国红枣行业发展模式分析及市场分析预测报告
- 4星|《职场老手的情绪管理法》:生活中的10%是由发生在你身上的事情组成,而另外的90%则是由你对所发生的事情如何反应所决定...
- Efficient bipedal robots based on passive-dynamic walkers
- 都马上2020年了,还学什么PMP?
- 发现了一个很好的搜索引擎