bin2hex / hex2bin în PHP

Șiruri de caractere PHP 4+ (hex2bin: PHP 5.4+)

bin2hex transformă un text (sau date binare) în cifre hexazecimale, iar hex2bin face inversul.

Sintaxă
bin2hex(string $string): string

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()) sau uniqid(). Sunt previzibile. Folosește bin2hex(random_bytes(16)).
  • Dai lui hex2bin un text cu număr impar de caractere sau cu litere în afara a-f. Primești un avertisment și false.

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.