Csrf.php 677 B

12345678910111213141516171819202122232425262728293031323334
  1. <?php
  2. namespace App\Utils;
  3. class Csrf
  4. {
  5. private const algorithm = 'sha256';
  6. private const lengthBytes = 32;
  7. /*
  8. * Genera una llave de cifrado del token.
  9. */
  10. static private function generateKey()
  11. {
  12. return bin2hex(random_bytes(self::lengthBytes));
  13. }
  14. /*
  15. * Genera un token con la llave de cifrado.
  16. */
  17. static public function generateToken(string $data)
  18. {
  19. return hash_hmac(self::algorithm, $data, self::generateKey());
  20. }
  21. /*
  22. * Comprueba la autenticación de un token.
  23. */
  24. static public function verify(string $token, string $test)
  25. {
  26. return hash_equals($token, $test);
  27. }
  28. }