为了提高性能,用 PHP 扩展实现了一个 JWT (JSON Web Token)

2018 年 5 月 24 日
 gaozihang

目前 PHP 所有的 JWT 库都是用 PHP 语言编写的,为了提高性能,我基于 openssl 库,用 PHP 扩展实现了一个 JWT

GitHub: https://github.com/cdoco/php-jwt

例子

$key = "example-hmac-key";
$claims = array(
    "data" => [
        "name" => "ZiHang Gao",
        "admin" => true
    ],
    "iss" => "http://example.org",
    "sub" => "1234567890",
);

// default HS256 algorithm
$token = jwt_encode($claims, $key);

echo $token . PHP_EOL;
//eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.
//eyJpc3MiOiJodHRwOlwvXC9leGFtcGxlLm9yZyIsInN1YiI6IjEyMzQ1Njc4OTAiLCJuYW1lIjoiWmlIYW5nIEdhbyIsImFkbWluIjp0cnVlfQ.
//2lFeBTsRegsjXiBCZNkW41KFlsZPSFu7KTsyAM9lUiQ

print_r(jwt_decode($token, $key));
/**
Array
(
    [data] => Array
        (
            [name] => ZiHang Gao
            [admin] => 1
        )

    [iss] => http://example.org
    [sub] => 1234567890
)
*/
7239 次点击
所在节点    分享创造
14 条回复
oott123
2018 年 5 月 24 日
怎么也得搞个 benchmark 让大家看看你的有多快啊,不然怎么吸引用户 233
qloog
2018 年 5 月 24 日
能写出来就至少给个 666
predator
2018 年 5 月 24 日
赞一个,7+的暂时只能在测试环境体验下先
gaozihang
2018 年 5 月 24 日
@oott123 我自己跑的 benchmark,是 PHP 的 5-6 倍,后续会把 benchmark 贴出来 ~
wensonsmith
2018 年 5 月 24 日
战略 Mark, 666
yongjing
2018 年 5 月 24 日
66666
m939594960
2018 年 5 月 24 日
好东西啊
swordne
2018 年 5 月 24 日
star 一下。
LeungJZ
2018 年 5 月 24 日
战略性马克。
习惯性 666。
vibbow
2018 年 5 月 24 日
其实并没有太大作用,单个请求周期里,JWT 运算占用的总运算时间非常之少,哪怕性能提升 1w 倍对整个请求的响应时间也不会有什么显著改进的。

而且还会导致跨版本升级的时候还需要等你这个扩展支持新版本...

目前耗时大头应该都是数据库操作...
notreami
2018 年 5 月 24 日
还不如加个缓存
changwei
2018 年 5 月 25 日
jwt 的加解密操作主要都是用 php 扩展提供的加解密和序列化函数操作的,php 扩展函数本身就是 c 写的,理论来说纯扩展和 php 库的速度差别应该不大啊。
pushy
2018 年 5 月 25 日
你的业务性能消耗在 JWT 上?
mrgirff
2025 年 4 月 13 日
推荐一个可以在线生成 JWT Key Generator https://jwtsecrets.com/tools

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://v2ex.xtra.eu.org/t/457349

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX