<?php namespace kernel\services; use Firebase\JWT\JWT; use kernel\helpers\Debug; use Random\RandomException; class TokenService { public static function JWT(string|\OpenSSLCertificate|\OpenSSLAsymmetricKey $key, string $alg, array $payload = []): string { return JWT::encode( payload: $payload, key: $key, alg: $alg ); } /** * @throws RandomException */ public static function random_bytes(int $ln): string { return bin2hex(random_bytes($ln)); } /** * @throws RandomException */ public static function md5(): string { return md5(microtime() . self::getSalt(10) . time()); } /** * @throws RandomException */ public static function crypt(): string { return crypt(microtime(), self::getSalt(20)); } /** * @throws RandomException */ public static function hash(string $alg): string { return hash($alg, self::getSalt(10)); } /** * @throws RandomException */ public static function getSalt(int $length): string { return bin2hex(random_bytes($length)); } }