Localzet LWT 是一个用于处理 Localzet Web Tokens 的库,这些令牌基于 JWT (JSON Web Tokens)。它提供了使用现代技术和标准创建、验证和处理令牌的功能。

v1.2.5 2024-06-10 18:12 UTC

This package is auto-updated.

Last update: 2024-09-10 18:44:10 UTC


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