Cara menghasilkan kata sandi string acak PHP (8 metode)

Programming

oleh Vinci terakhir diubah pada 5 Oktober 2022.

Membuat kata sandi string acak mungkin tampak seperti tugas yang sepele. Jika Anda benar-benar menginginkan sesuatu yang “benar-benar acak”, itu sulit dilakukan. Dalam proyek di mana Anda menginginkan utas kusut yang kurang penting, ada banyak cara untuk melakukannya.

Saya menyajikan delapan cara berbeda untuk mendapatkan token string acak menggunakan PHP.

  1. Menggunakan acak_int()
  2. Menggunakan rand()
  3. Dengan mengacak string untuk menghasilkan substring acak.
  4. Menggunakan bin2hex()
  5. Menggunakan mt_rand()
  6. Gunakan hash sha1()
  7. Gunakan hash md5()
  8. Menggunakan PHP unik()

Ada banyak fungsi PHP yang dapat digunakan untuk menghasilkan string acak. Dengan menggabungkan fungsi-fungsi ini, kode ini dijamin akan menghasilkan string acak yang tidak dapat diulang dan tidak dapat diprediksi oleh pengguna sipil.

1) Penggunaan acak_int()

PHP acak_int() Fungsi ini menghasilkan bilangan bulat pseudorandom kriptografi. Integer acak ini digunakan sebagai indeks untuk mendapatkan karakter dari dasar string yang diberikan.

Basis string terdiri dari karakter 0-9, az, dan AZ untuk mengembalikan nomor alfanumerik acak.

Contoh cepat

<?php
/**
 * Uses random_int as core logic and generates a random string
 * random_int is a pseudorandom number generator
 *
 * @param int $length
 * @return string
 */
function getRandomStringRandomInt($length = 16)
{
    $stringSpace="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
    $pieces = [];
    $max = mb_strlen($stringSpace, '8bit') - 1;
    for ($i = 0; $i < $length; ++ $i) {
        $pieces[] = $stringSpace[random_int(0, $max)];
    }
    return implode('', $pieces);
}
echo "<br>Using random_int(): " . getRandomStringRandomInt();
?>

string acak php

2) Penggunaan rand()

Ini menggunakan PHP sederhana rand() Dan mengikuti logika langsung tanpa enkripsi atau enkripsi.

Menghitung panjang dasar dari string yang diberikan dan meneruskannya sebagai batas ke nomor rand() Fungsi.

Cocokkan karakter acak ini dengan indeks acak yang dikembalikan oleh rand(). Menerapkan rangkaian string setiap kali untuk membentuk string acak dalam satu lingkaran.

<?php
/**
 * Uses the list of alphabets, numbers as base set, then picks using array index
 * by using rand() function.
 *
 * @param int $length
 * @return string
 */
function getRandomStringRand($length = 16)
{
    $stringSpace="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
    $stringLength = strlen($stringSpace);
    $randomString = '';
    for ($i = 0; $i < $length; $i ++) {
        $randomString = $randomString . $stringSpace[rand(0, $stringLength - 1)];
    }
    return $randomString;
}
echo "<br>Using rand(): " . getRandomStringRand();
?>

3) dengan menekan string untuk menghasilkan substring acak.

Mengembalikan bilangan bulat acak dengan panjang yang ditentukan.

Menerapkan pengulangan string PHP dan mengacak string output. Kemudian, ia mengekstrak substring dengan panjang yang ditentukan dari string yang diacak.

<?php
/**
 * Uses the list of alphabets, numbers as base set.
 * Then shuffle and get the length required.
 *
 * @param int $length
 * @return string
 */
function getRandomStringShuffle($length = 16)
{
    $stringSpace="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
    $stringLength = strlen($stringSpace);
    $string = str_repeat($stringSpace, ceil($length / $stringLength));
    $shuffledString = str_shuffle($string);
    $randomString = substr($shuffledString, 1, $length);
    return $randomString;
}
echo "<br>Using shuffle(): " . getRandomStringShuffle();
?>

4) Penggunaan bin2hex()

Suka acak_int(), random_byte() Mengembalikan byte acak aman terenkripsi.

Jika fungsinya tidak ada, program ini menggunakan maka openssl_random_pseudo_bytes() Fungsi.

<?php
/**
 * Get bytes of using random_bytes or openssl_random_pseudo_bytes
 * then using bin2hex to get a random string.
 *
 * @param int $length
 * @return string
 */
function getRandomStringBin2hex($length = 16)
{
    if (function_exists('random_bytes')) {
        $bytes = random_bytes($length / 2);
    } else {
        $bytes = openssl_random_pseudo_bytes($length / 2);
    }
    $randomString = bin2hex($bytes);
    return $randomString;
}
echo "<br>Using bin2hex(): " . getRandomStringBin2hex();
?>

5) Penggunaan mt_rand()

PHP mt_rand() Itu adalah pengganti rand(). Ini menghasilkan string acak menggunakan Mersenne Twister Random Generator.

String basis kode ini secara dinamis menggunakan Domain() Fungsi.

Kemudian, ia mengeksekusi loop untuk menghasilkan string acak menggunakannya mt_rand() di setiap iterasi

<?php
/**
 * Using mt_rand() actually it is an alias of rand()
 *
 * @param int $length
 * @return string
 */
function getRandomStringMtrand($length = 16)
{
    $keys = array_merge(range(0, 9), range('a', 'z'));
    $key = "";
    for ($i = 0; $i < $length; $i ++) {
        $key .= $keys[mt_rand(0, count($keys) - 1)];
    }
    $randomString = $key;
    return $randomString;
}
echo "<br>Using mt_rand(): " . getRandomStringMtrand();
?>

6) Penggunaan hash sha1()

Ini menerapkan hash sha1 dari string yang merupakan hasilnya rand().

Kemudian, ia mengekstrak substring dengan panjang yang ditentukan dari hash.

<?php
/**
 *
 * Using sha1().
 * sha1 has a 40 character limit and always lowercase characters.
 *
 * @param int $length
 * @return string
 */
function getRandomStringSha1($length = 16)
{
    $string = sha1(rand());
    $randomString = substr($string, 0, $length);
    return $randomString;
}
echo "<br>Using sha1(): " . getRandomStringSha1();
?>

7) Penggunaan hash md5()

berlaku md5() hash on rand() Hasilnya kemudian, langkah-langkah selebihnya sama dengan contoh di atas.

<?php
/**
 *
 * Using md5().
 *
 * @param int $length
 * @return string
 */
function getRandomStringMd5($length = 16)
{
    $string = md5(rand());
    $randomString = substr($string, 0, $length);
    return $randomString;
}
echo "<br>Using md5(): " . getRandomStringMd5();
?>

8) Menggunakan PHP unik()

PHP satu () Fungsi menerima pengidentifikasi awalan unik berdasarkan waktu saat ini dalam mikrodetik.

Itu tidak menghasilkan angka acak kriptografis seperti acak_int() Dan random_byte().

<?php
/**
 *
 * Using uniqid().
 *
 * @param int $length
 * @return string
 */
function getRandomStringUniqid($length = 16)
{
    $string = uniqid(rand());
    $randomString = substr($string, 0, $length);
    return $randomString;
}
echo "<br>Using uniqid(): " . getRandomStringUniqid();
?>

Unduh

Kembali ke atas


Source link

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *