Класс LWT
предоставляет методы для кодирования и декодирования LWT-токенов. Он использует алгоритмы шифрования AES и RSA для шифрования данных в токене.
Чтобы кодировать LWT-токен, используйте метод encode()
класса LWT
. Этот метод принимает данные, закрытый ключ и алгоритм шифрования (по умолчанию ES512
) в качестве аргументов.
Если закрытый ключ и алгоритм шифрования не указаны, используются значения, определенные в классе.
$data = ['username' => 'localzet', 'email' => '[email protected]'];
$tokenPrivateKey = '...'; // Закрытый ключ для шифрования токена (рекомендую ECDSA)
$tokenEncryption = 'HS256'; // Алгоритм шифрования (по умолчанию ES512)
$encodedToken = LWT::encode($data, $tokenPrivateKey, $tokenEncryption);
Чтобы декодировать LWT-токен и получить расшифрованные данные, используйте метод decode()
класса LWT
. Этот метод принимает закодированный токен, публичный ключ и алгоритм шифрования в качестве аргументов.
Если публичный ключ и алгоритм шифрования не указаны, используются значения, определенные в классе.
$encodedToken = '...'; // Закодированный LWT-токен
$tokenPublicKey = '...'; // Публичный ключ для шифрования токена (рекомендую ECDSA)
$tokenEncryption = 'HS256'; // Алгоритм шифрования (по умолчанию ES512)
$decodedData = LWT::decode($encodedToken, $tokenPublicKey, $tokenEncryption);
Чтобы закодировать данные в LWT-токене и дополнительно обезопасить их, используйте методы encode()
и decode()
класса LWT
с дополнительными аргументами.
Эти методы принимают дополнительные ключи для шифрования данных в полезной нагрузке комбинацией ассиметричного (RSA) и симметричного (AES-256-CBC) алгоритмов.
Если дополнительные ключи для шифрования данных не указаны, данные загружаются в полезную нагрузку в неизменном виде.
$encodedToken = '...'; // Закодированный LWT-токен
$tokenPublicKey = '...'; // Публичный ключ для шифрования токена (рекомендую ECDSA)
$tokenEncryption = 'HS256'; // Алгоритм шифрования (по умолчанию ES512)
$decodedData = LWT::decode($encodedToken, $tokenPublicKey, $tokenEncryption);
Класс LWT
имеет несколько статических свойств и констант, которые можно настроить для изменения поведения кодирования и декодирования токенов.
Чтобы изменить алгоритм шифрования для сигнатуры, измените значение константы LWT_ENCRYPTION
.
Возможные значения:
HMAC-based: HS256, HS384, HS512
RSA-based: RS256, RS384, RS512
ECDSA-based: ES256, ES384, ES512
// Изменение алгоритма шифрования для сигнатуры LWT-токена (рекомендую ES512)
LWT::LWT_ENCRYPTION = 'ES512';
Чтобы изменить закрытый или публичный ключи для кодирования или декодирования 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