Генератор випадкових рядків і паролів
Токени, паролі, ключі API: задана довжина, набори символів, без схожих 0O1l. Генерується у браузері.
Дає рядок, який справді випадковий, а не rand() з 1998 року
Секрет для .env, ключ вебхука, тимчасовий пароль користувача, salt для тестів. Інструмент генерує рядки заданої довжини з вибраних наборів символів, за потреби без схожих 0O1l, і робить це у браузері через криптографічний генератор: на сервер нічого не йде.
random_bytes дає криптографічно стійкі байти, random_int рівномірне випадкове число в діапазоні без зміщення. Усе інше будується на них: bin2hex для hex-токенів, base64 для коротших, вибір символів через random_int для паролів з обмеженим алфавітом. У Laravel це Str::random() і Str::password().
$token = bin2hex(random_bytes(32)); // 64 символи hex, 256 бітів ентропії
$short = rtrim(strtr(base64_encode(random_bytes(24)), '+/', '-_'), '=');
// пароль з обмеженого алфавіту без зміщення
$alphabet = 'ABCDEFGHJKLMNPQRSTUVWXYZabcdefghjkmnpqrstuvwxyz23456789';
$password = '';
for ($i = 0; $i < 16; $i++) {
$password .= $alphabet[random_int(0, strlen($alphabet) - 1)];
}
Що питають про цей інструмент
Вони передбачувані: знаючи кілька значень, можна відновити наступні. Для токенів скидання пароля, ключів API і сесій потрібне криптографічно стійке джерело: random_bytes і random_int у PHP, crypto.getRandomValues у браузері. Цей інструмент використовує саме його.
32 випадкові байти (64 символи в hex або 43 у base64url) дають 256 бітів ентропії, більше не потрібно нікому. Для паролів людям 16–20 символів із трьох наборів. Коротші за 12 символів паролі підбираються за години на звичайному GPU.
Коли рядок доводиться читати з екрана чи диктувати: 0 і O, 1, l та I плутаються в більшості шрифтів. Для токенів, які живуть лише в коді, це зайве: втрачається ентропія.