package io.jsonwebtoken.impl;
public class DefaultJwtBuilder implements JwtBuilder {
// 其他代码省略....
// 注意下面的代码 byte[] bytes = TextCodec.BASE64.decode(base64EncodedSecretKey);
// key 传入进来是要Bese64解密后再使用
public JwtBuilder signWith(SignatureAlgorithm alg, String base64EncodedSecretKey) {
Assert.hasText(base64EncodedSecretKey, "base64-encoded secret key cannot be null or empty.");
Assert.isTrue(alg.isHmac(), "Base64-encoded key bytes may only be specified for HMAC signatures. If using RSA or Elliptic Curve, use the signWith(SignatureAlgorithm, Key) method instead.");
byte[] bytes = TextCodec.BASE64.decode(base64EncodedSecretKey);
return this.signWith(alg, bytes);
PHP 代码处理部分
先通过composer引入EasyJwt
composer require nowakowskir/php-jwt
namespace app\controller;
use app\BaseController;
class Index extends BaseController
public function test()
// 特别需要注意的地方在于 explainToken 这里
// RuoYi的java代码里面,秘钥也是base64加密过的,具体看上面的Java代码
// 所以这里传入秘钥的时候,需要使用base64解密在传入
$token="eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpbl91c2VyX2tleSI6IjUwN2I1MDY1LWFhMGMtNGQ3ZC04NWI3LTExNGRlMTE2YjM2NyJ9.5ZKGvBbqsly4EKHHDVcm3JU3lCj0gFJAzc6OJxmJR2g";
$result = (new \EasyJwt\Jwt("HS256"))->explainToken($token3, base64_decode("qFRpGBvXx0XwOI2QCI"))->getPayload();
var_dump($result);