Cara Menghasilkan Token String Acak PHP (8 Cara)

0
(0)

oleh Vincy. Terakhir diubah pada 5 Oktober 2022.

Menghasilkan token string acak mungkin terdengar seperti pekerjaan sepele. Jika Anda benar-benar menginginkan sesuatu yang “benar-benar acak”, itu adalah salah satu pekerjaan yang sulit dilakukan. Dalam proyek di mana Anda menginginkan string acak yang tidak terlalu kritis, ada banyak cara untuk menyelesaikannya.

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

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

Ada terlalu banyak fungsi PHP yang dapat digunakan untuk menghasilkan string acak. Dengan kombinasi fungsi-fungsi tersebut, kode ini memastikan untuk menghasilkan string acak yang tidak dapat diulang dan tidak dapat diprediksi oleh pengguna sipil.

1) Menggunakan acak_int()

PHP acak_int() fungsi menghasilkan integer acak semu kriptografi. Integer acak ini digunakan sebagai indeks untuk mendapatkan karakter dari basis string yang diberikan.

Basis string mencakup karakter 0-9, az, dan AZ untuk mengembalikan angka acak alfanumerik.

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) Menggunakan rand()

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

Ini menghitung panjang dasar string yang diberikan dan meneruskannya sebagai batas ke rand() fungsi.

Itu mendapat karakter acak dengan indeks acak yang dikembalikan oleh rand(). Ini menerapkan penggabungan 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 pengocokan string untuk menghasilkan substring acak.

Ini mengembalikan bilangan bulat acak dengan panjang yang ditentukan.

Ini menerapkan pengulangan string PHP dan mengocok string output. Kemudian, ekstrak substring dari string yang diacak dengan panjang yang ditentukan.

<?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) Menggunakan bin2hex()

Suka acak_int()itu random_byte() mengembalikan byte acak yang diamankan secara kriptografis.

Jika fungsinya tidak ada, program ini kemudian menggunakan 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) Menggunakan mt_rand()

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

Kode ini menghasilkan basis string secara dinamis menggunakan jangkauan() fungsi.

Kemudian, menjalankan loop untuk membangun string acak menggunakan mt_rand() dalam 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) Menggunakan hashing sha1()

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

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

<?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) Menggunakan hashing md5()

Ini berlaku md5() hash pada rand() hasil. Kemudian, sisa prosesnya sama seperti 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 kaku() fungsi mendapat pengidentifikasi unik awalan 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

How useful was this post?

Click on a star to rate it!

Average rating 0 / 5. Vote count: 0

No votes so far! Be the first to rate this post.