php firebase php-jwt,firebase/php-jwt使用openssl实现 RSA非对称加密

最近在使用PHP 中 firebase/php-jwt ,需要选择加密算法,选择了RSA算法,需要使用openssl来生成密钥。把生成方式使用记录下来。

简单定义:公钥和私钥,加密和解密使用的是两个不同的密钥,所以是非对称

系统:ubuntu 18.04

软件:openssl java php

生成公钥私钥

使用命令生成私钥:

openssl genrsa -out rsa_private_key.pem 1024

参数:genrsa 生成密钥   -out 输出到文件  rsa_private_key.pem 文件名  1024 长度

从私钥中提取公钥:

openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem

参数: rsa 提取公钥  -in 从文件中读入  rsa_private_key.pem 文件名   -pubout  输出   -out 到文件  rsa_public_key.pem  文件名

使用openssl加解密:

新建一个readme.txt 内容是taoshihan

使用公钥加密:

openssl rsautl -encrypt -in readme.txt -inkey rsa_public_key.pem -pubin -out hello.en

参数: rsautl 加解密  -encrypt 加密  -in 从文件输入  readme.txt 文件名  -inkey  输入的密钥  rsa_public_key.pem  上一步生成的公钥  -pubin 表名输入是公钥文件  -out输出到文件  hello.en 输出文件名

使用私钥解密:

openssl rsautl -decrypt -in hello.en -inkey rsa_private_key.pem -out hello.de

参数: -decrypt 解密  -in 从文件输入 hello.en 上一步生成的加密文件  -inkey 输入的密钥 rsa_private_key.pem 上一步生成的私钥  -out输出到文件  hello.de 输出的文件名

php加解密:

$profile="taoshihan";

echo"加密前:{$profile}";//公钥加密

$public_key=file_get_contents("rsa_public_key.pem");

$pub_key=openssl_pkey_get_public($public_key);

openssl_public_encrypt($profile,$encrypted,$pub_key);

$encrypted=base64_encode($encrypted);//因为加密后是乱码,所以base64一下

echo "加密后:";

echo $encrypted."";//私钥解密

$private_key=file_get_contents("rsa_private_key.pem");

$pi_key=openssl_pkey_get_private($private_key);

openssl_private_decrypt(base64_decode($encrypted),$decrypted,$pi_key);

echo"解密后:";

echo $decrypted."";

firebase/php-jwt生成JWT:

生成:

$jwt=JWT::encode($token,self::$privateKey,'RS256');

解密:

$token=JWT::decode($jwt,self::$publickKey, ['RS256']);

参数:$privateKey为私钥;publickKey为公钥

https://github.com/firebase/php-jwt

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值