Generowanie losowych znaków w PHP

Data aktualizacji: 22.04.2024r. Autor: Bartosz Stefanicki.

Generowanie losowych znaków w PHP

Wygenerowanie losowego ciągu znaków - można to zrobić na wiele sposobów, ale ich rezultaty są bardziej, lub mniej przewidywalne.

Generowanie uniqid()

Ta funkcja zwraca losowy ciąg znaków na podstawie timestampa, czyli bieżącej daty i godziny. Przyjmuje dwa opcjonalne parametry - prefix i wygenerowanie dodatkowego ciągu znaków.

<?php

// 5fc3d25cba7f6
echo uniqid();

// prefix_5fc3d25cba7f8
echo uniqid('prefix_');

// prefix_5fc3d25cba7f90.57409045
echo uniqid('prefix_', true);

?>

Generowanie losowych znaków

Funkcja time() zwraca obecny czas. md5() domyślnie zwraca 32 znaków, a sha1() 40 znaków, więc dzięki substr() możemy ten ciąg uciąć do odpowiednich rozmiarów.

<?php

// 62f43775b4fc313e72d8b5c6050f063fe4b93032
echo sha1(time());

// 49c4a4a2deb6273ffda85c4b45161201
echo md5(time());

// 3d40008475762363bd93
echo substr(md5(time()), 0, 20);

// 36f6df1e0e46a4b45174
echo substr(sha1(time()), 0, 20);

?>

Najbezpieczniejszy losowy ciąg znaków

Ostatni punkt to najmniej przewidywalny ciąg znaków, tym samym najbardziej bezpieczny. Można go spokojnie wykorzystać do różnych portali, kont internetowych i formularzy rejestracyjnych. Wyjaśniając - random_bytes() zwraca losowe bajty. Warto na tą funkcję nałożyć drugą bin2hex - zmieni bajty na dwukrotnie dłuższy ciąg znaków.

<?php

// a93369e6fb91cd28d6140f54808132eb35c1d2ec90eea8752ad7c09a91c1433d
echo bin2hex(random_bytes(32));

?>

Na itporady.pl znajdziesz także generator bezpiecznych haseł - sprawdź koniecznie w narzędziach online.

Kategorie: PHP + MySQL. Tagi: #php, #skrypty. Źródło obrazków: Pixabay, Font awesome.

Zobacz także

3 komentarzy