Ce face bin2hex / hex2bin
bin2hex scrie fiecare octet ca două cifre hexazecimale (0-9, a-f). Rezultatul are mereu de două ori mai multe caractere decât octeți are textul original.
Cel mai des este folosită împreună cu random_bytes pentru token-uri sigure (resetare parolă, confirmare email). hex2bin transformă înapoi cifrele hexazecimale în octeții originali; dacă textul primit nu este hexazecimal valid, returnează false și dă un avertisment.
Parametri
| Parametru | Descriere |
|---|---|
$string |
La bin2hex: datele de transformat. La hex2bin: un text hexazecimal, cu număr par de caractere. |
Ce returnează
bin2hex: textul hexazecimal. hex2bin: datele originale sau false.
Exemple
Exemplul 1: Text în hexazecimal și înapoi
Litera „ș” are doi octeți în UTF-8 (c8 99), de aceea ocupă patru cifre hexazecimale.
<?php
$hex = bin2hex("Iași");
echo $hex . "\n";
echo hex2bin($hex);
Rezultat
4961c89969
Iași
Exemplul 2: Token sigur pentru resetarea parolei
16 octeți aleatorii devin 32 de caractere hexazecimale. Rezultatul diferă la fiecare rulare.
<?php
$token = bin2hex(random_bytes(16));
echo $token . " (" . strlen($token) . " caractere)";
Rezultat posibil (diferă la fiecare rulare)
9f86d081884c7d659a2feaa0c55ad015 (32 caractere)
Greșeli frecvente
- Generezi token-uri cu
md5(rand())sauuniqid(). Sunt previzibile. Foloseștebin2hex(random_bytes(16)). - Dai lui
hex2binun text cu număr impar de caractere sau cu litere în afara a-f. Primești un avertisment șifalse.
Comenzi înrudite
chr / ord: chr transformă un cod numeric (0-255) în caracter, iar ord face inversul: dă codul primului octet al unui text.random_int: Generează un număr întreg aleatoriu, sigur, între două valori.