Generowanie losowych znaków w PHP

Generowanie losowych znaków w PHP

PHP + MySQL Data aktualizacji: 11.12.2020

Generowanie losowych znaków w PHP

Zadanie na dziś to wygenerowanie losowego ciągu znaków. Warto wspomnieć, że można to zrobić na wiele sposobów - ich rezultaty są bardziej, lub mniej przewidywalne. Sprawdźmy zatem jakie na tę chwilę będą najlepszym wyjściem.

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.

Autor: Bartosz Stefanicki. Data publikacji: 28.11.2020. Tagi: php, skrypty. Źródło obrazka porady: Pixabay.

2 komentarze