https://github.com/localzet/lwt
Localzet LWT is a library for working with Localzet Web Tokens, which are based on JWT (JSON Web Tokens). It provides functionality for creating, verifying, and handling tokens using modern technologies and standards.
https://github.com/localzet/lwt
library security
Last synced: 5 months ago
JSON representation
Localzet LWT is a library for working with Localzet Web Tokens, which are based on JWT (JSON Web Tokens). It provides functionality for creating, verifying, and handling tokens using modern technologies and standards.
- Host: GitHub
- URL: https://github.com/localzet/lwt
- Owner: localzet
- License: agpl-3.0
- Created: 2023-08-25T21:10:41.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2024-10-06T22:16:28.000Z (over 1 year ago)
- Last Synced: 2025-07-27T06:01:29.066Z (11 months ago)
- Topics: library, security
- Language: PHP
- Homepage: https://localzet.github.io/LWT/
- Size: 85 KB
- Stars: 3
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: .github/CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE
- Code of conduct: .github/CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
# LWT - Localzet Web Tokens (JWT-based)
Класс `LWT` предоставляет методы для кодирования и декодирования LWT-токенов. Он использует алгоритмы шифрования AES и RSA для шифрования данных в токене.
## Использование
### Кодирование LWT-токена
Чтобы кодировать LWT-токен, используйте метод `encode()` класса `LWT`. Этот метод принимает данные, закрытый ключ и алгоритм шифрования (по умолчанию `ES512`) в качестве аргументов.
>Если закрытый ключ и алгоритм шифрования не указаны, используются значения, определенные в классе.
```php
$data = ['username' => 'localzet', 'email' => 'creator@localzet.com'];
$tokenPrivateKey = '...'; // Закрытый ключ для шифрования токена (рекомендую ECDSA)
$tokenEncryption = 'HS256'; // Алгоритм шифрования (по умолчанию ES512)
$encodedToken = LWT::encode($data, $tokenPrivateKey, $tokenEncryption);
```
### Декодирование LWT-токена
Чтобы декодировать LWT-токен и получить расшифрованные данные, используйте метод `decode()` класса `LWT`. Этот метод принимает закодированный токен, публичный ключ и алгоритм шифрования в качестве аргументов.
>Если публичный ключ и алгоритм шифрования не указаны, используются значения, определенные в классе.
```php
$encodedToken = '...'; // Закодированный LWT-токен
$tokenPublicKey = '...'; // Публичный ключ для шифрования токена (рекомендую ECDSA)
$tokenEncryption = 'HS256'; // Алгоритм шифрования (по умолчанию ES512)
$decodedData = LWT::decode($encodedToken, $tokenPublicKey, $tokenEncryption);
```
### Кодирование данных в LWT-токене
Чтобы закодировать данные в LWT-токене и дополнительно обезопасить их, используйте методы `encode()` и `decode()` класса `LWT` с дополнительными аргументами.
Эти методы принимают дополнительные ключи для шифрования данных в полезной нагрузке комбинацией ассиметричного (RSA) и симметричного (AES-256-CBC) алгоритмов.
>Если дополнительные ключи для шифрования данных не указаны, данные загружаются в полезную нагрузку в неизменном виде.
```php
$encodedToken = '...'; // Закодированный LWT-токен
$tokenPublicKey = '...'; // Публичный ключ для шифрования токена (рекомендую ECDSA)
$tokenEncryption = 'HS256'; // Алгоритм шифрования (по умолчанию ES512)
$decodedData = LWT::decode($encodedToken, $tokenPublicKey, $tokenEncryption);
```
## Настройка
Класс `LWT` имеет несколько статических свойств и констант, которые можно настроить для изменения поведения кодирования и декодирования токенов.
### Настройка JWT-совместимого алгоритма шифрования LWT-токена
Чтобы изменить алгоритм шифрования для сигнатуры, измените значение константы `LWT_ENCRYPTION`.
>Возможные значения: \
> **HMAC-based**: HS256, HS384, HS512 \
> **RSA-based**: RS256, RS384, RS512 \
> **ECDSA-based**: ES256, ES384, ES512
```php
// Изменение алгоритма шифрования для сигнатуры LWT-токена (рекомендую ES512)
LWT::LWT_ENCRYPTION = 'ES512';
```
### Настройка закрытого и публичного ключей LWT-токена
Чтобы изменить закрытый или публичный ключи для кодирования или декодирования LWT-токена, измените значения статических свойств `$LWT_PRIVATE_KEY` и `$LWT_PUBLIC_KEY` соответственно.
```php
// Изменение закрытого ключа для кодирования LWT-токена
LWT::$LWT_PRIVATE_KEY = '...'; // Закрытый ключ в формате PEM (рекомендую ECDSA)
// Изменение публичного ключа для декодирования LWT-токена
LWT::$LWT_PUBLIC_KEY = '...'; // Публичный ключ в формате PEM (рекомендую ECDSA)
```
### Настройка закрытого и публичного ключей данных
Чтобы изменить закрытый или публичный ключи для шифрования или расшифровки данных, измените значения статических свойств `$DATA_PRIVATE_KEY` и `$DATA_PUBLIC_KEY` соответственно.
```php
// Изменение закрытого ключа для шифрования данных
LWT::$DATA_PRIVATE_KEY = '...'; // Закрытый ключ RSA
// Изменение публичного ключа для расшифровки данных
LWT::$DATA_PUBLIC_KEY = '...'; // Публичный ключ RSA
```