localzet / lwt
Localzet LWT 是一个用于处理 Localzet Web Tokens 的库,这些令牌基于 JWT (JSON Web Tokens)。它提供了使用现代技术和标准创建、验证和处理令牌的功能。
Requires
- php: >=7.4
- ext-json: *
- ext-mbstring: *
- ext-openssl: *
Suggests
- ext-sodium: For EdDSA
README
类 LWT
提供了编码和解码 LWT-令牌的方法。它使用 AES 和 RSA 算法对令牌中的数据进行加密。
使用
LWT-令牌编码
要编码 LWT-令牌,请使用 LWT
类的 encode()
方法。此方法接受数据、私钥和加密算法(默认为 ES512
)作为参数。
如果未指定私钥和加密算法,则使用类中定义的值。
$data = ['username' => 'localzet', 'email' => 'creator@localzet.com']; $tokenPrivateKey = '...'; // Закрытый ключ для шифрования токена (рекомендую ECDSA) $tokenEncryption = 'HS256'; // Алгоритм шифрования (по умолчанию ES512) $encodedToken = LWT::encode($data, $tokenPrivateKey, $tokenEncryption);
LWT-令牌解码
要解码 LWT-令牌并获取解密后的数据,请使用 LWT
类的 decode()
方法。此方法接受编码的令牌、公钥和加密算法作为参数。
如果未指定公钥和加密算法,则使用类中定义的值。
$encodedToken = '...'; // Закодированный LWT-токен $tokenPublicKey = '...'; // Публичный ключ для шифрования токена (рекомендую ECDSA) $tokenEncryption = 'HS256'; // Алгоритм шифрования (по умолчанию ES512) $decodedData = LWT::decode($encodedToken, $tokenPublicKey, $tokenEncryption);
LWT-令牌中的数据编码
要编码 LWT-令牌中的数据并进一步保护它们,请使用 LWT
类的 encode()
和 decode()
方法,并添加额外的参数。这些方法接受额外的密钥,以组合使用非对称(RSA)和对称(AES-256-CBC)算法对有效载荷中的数据进行加密。
如果未指定加密数据的额外密钥,则数据将原样加载到有效载荷中。
$encodedToken = '...'; // Закодированный LWT-токен $tokenPublicKey = '...'; // Публичный ключ для шифрования токена (рекомендую ECDSA) $tokenEncryption = 'HS256'; // Алгоритм шифрования (по умолчанию ES512) $decodedData = LWT::decode($encodedToken, $tokenPublicKey, $tokenEncryption);
配置
LWT
类有多个静态属性和常量,可以配置以改变令牌编码和解码的行为。
配置 LWT-令牌的 JWT 兼容加密算法
要更改用于签名的加密算法,请更改 LWT_ENCRYPTION
常量的值。
可能的值
基于 HMAC:HS256, HS384, HS512
基于 RSA:RS256, RS384, RS512
基于 ECDSA:ES256, ES384, ES512
// Изменение алгоритма шифрования для сигнатуры LWT-токена (рекомендую ES512) LWT::LWT_ENCRYPTION = 'ES512';
配置 LWT-令牌的私钥和公钥
要更改用于编码或解码 LWT-令牌的私钥或公钥,请分别更改静态属性 $LWT_PRIVATE_KEY
和 $LWT_PUBLIC_KEY
的值。
// Изменение закрытого ключа для кодирования LWT-токена LWT::$LWT_PRIVATE_KEY = '...'; // Закрытый ключ в формате PEM (рекомендую ECDSA) // Изменение публичного ключа для декодирования LWT-токена LWT::$LWT_PUBLIC_KEY = '...'; // Публичный ключ в формате PEM (рекомендую ECDSA)
配置数据的私钥和公钥
要更改用于加密或解密数据的私钥或公钥,请分别更改静态属性 $DATA_PRIVATE_KEY
和 $DATA_PUBLIC_KEY
的值。
// Изменение закрытого ключа для шифрования данных LWT::$DATA_PRIVATE_KEY = '...'; // Закрытый ключ RSA // Изменение публичного ключа для расшифровки данных LWT::$DATA_PUBLIC_KEY = '...'; // Публичный ключ RSA