bin2hex
funkcja
Konwertuje ciąg bajtów na reprezentację szesnastkową (hex). Używana po random_bytes() do zamiany losowych bajtów na czytelny ciąg znaków.
bin2hex(string $string): string
bin2hex zamienia każdy bajt wejściowego ciągu na dwa znaki szesnastkowe (0-9, a-f). Wynik jest ciągiem złożonym wyłącznie z drukowalnych znaków ASCII, bezpiecznym do użycia w HTML, URL i bazie danych. Wynikowy ciąg ma dokładnie dwa razy więcej znaków niż wejście.
Najczęstsze zastosowanie to kodowanie losowych bajtów z random_bytes() do postaci tokenu:
<?php
declare(strict_types=1);
// Podstawowe użycie:
$bajty = "\x48\x65\x6c\x6c\x6f"; // "Hello" w bajtach
echo bin2hex($bajty); // wynik: 48656c6c6f
// Typowe zastosowanie — token kryptograficzny:
$token = bin2hex(random_bytes(32));
echo strlen($token); // wynik: 64 (32 bajty × 2)
echo $token; // wynik: np. 3a7f9c... (64 znaki hex)
// Odwrotność: hex2bin()
$oryginal = hex2bin($token); // wróci do surowych 32 bajtów
echo strlen($oryginal); // wynik: 32
// Generowanie bezpiecznego tokenu CSRF:
$_SESSION['csrf_token'] = bin2hex(random_bytes(32));