关于php:php签名

装置

composer require whereof/signature

反对加密形式

alg 实现形式 key参数
ES384 openssl 数组蕴含publicKey和privateKey
ES256 openssl 数组蕴含publicKey和privateKey
HS256 hash_hmac 字符串
HS384 hash_hmac 字符串
HS512 hash_hmac 字符串
RS256 openssl 数组蕴含publicKey和privateKey
RS384 openssl 数组蕴含publicKey和privateKey
RS512 openssl 数组蕴含publicKey和privateKey
EdDSA sodium_crypto 字符串

异样捕获

whereof\Signature\Exceptions\SignatureInvalidException 签名不正确
whereof\Signature\Exceptions\BeforeValidException 签名在某个工夫点之后能力用
whereof\Signature\Exceptions\ExpiredException 签名生效

Example

$time    = time();
$payload = [
    'iss'  => 'github.com',//签发人
    'iat'  => $time, //签发工夫
    'nbf'  => $time, //生成签名之后失效
    'exp'  => $time + 7200, //过期工夫
    'data' => [
        'id'       => 88,
        'username' => 'whereof'
    ],
];

$jwt = new \whereof\Signature\Jwt(\whereof\Signature\Support\KeyHelper::key());
$token = $jwt->encode($payload);
$data = $jwt->encode($token);

Example with RS256 (openssl)

$jwt = new \whereof\Signature\Jwt( \whereof\Signature\Support\KeyHelper::RS256(),'RS256'));
$jwt = new \whereof\Signature\Jwt( \whereof\Signature\Support\KeyHelper::RS256Pem(),'RS256'));
$token = $jwt->encode($payload);
$data = $jwt->decode($token);

Example with EdDSA (libsodium and Ed25519 signature)

$jwt = new \whereof\Signature\Jwt( \whereof\Signature\Support\KeyHelper::EdDSA(),'EdDSA'));
$token = $jwt->encode($payload);
$data = $jwt->decode($token);

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理