Ova PHP skripta generiše kljuc proizvoljne dužine i ključ koji je sastavljen od karaktera koje izabere sam korisnik
Skripta (funkcija) izgleda ovako:
<?php
function Generator_kljuca($duzina = 10, $karakteri = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789")
{
$MIN_DUZINA_KLJUCA = 1;
$MAX_DUZINA_KLJUCA = 32;
if ($duzina < $MIN_DUZINA_KLJUCA) $duzina = $MIN_DUZINA_KLJUCA;
if ($duzina > $MAX_DUZINA_KLJUCA) $duzina = $MAX_DUZINA_KLJUCA;
$s = "";
$broj_karaktera = strlen($karakteri) - 1;
for ($i=0; $i<$duzina; $i++)
$s .= substr($karakteri, mt_rand(0, $broj_karaktera), 1);
return $s;
}
?>
echo Generator_kljuca();
rezultat će izgledati ovako (dužine 10 karaktera, sastavljen od podrazumevanih karatkera tj cifara, malih i velikih slova):
YT7frGtsm6
Ukoliko želimo tačno određen ključ, npr dužine 8 karaktera sastavljen samo od cifara, potrebo je pozvati funkciju na sledeći način:
echo Generator_kljuca(8, "0123456789");
i dobijamo:
859649
Ako funkciju pozovemo sa parametrima koji su van opsega dozvoljene dužine ključa (u ovom slučaju od 1 do 32 karaktera):
echo Generator_kljuca(-5, "013456789");
echo Generator_kljuca(105, "013456789ABCDEF");
dobijamo:
9
10FF979653B1EF609EB43E4C005647D8
Funkciju možemo pozvati samo sa jednim karakterom, npr:
echo Generator_kljuca(10);
echo Generator_kljuca(5);
dobijamo:
pvALJ9gYji
sZodD
Ako funciju pozovemo samo sa drugim parametrom, a pri tome računamo da prvi parametar ima podrazumevanu vrednost:
echo Generator_kljuca("0123456789");
nećemo dobiti ono što želimo:
pm4liTuSK21W0MueXBHwuR6kghTj0fXS
jer se deo "0123456789" računa kao prvi parametar, a to je u ovom slučaju dužina ključa. kada se string "0123456789" pretvori u broj, dobija se broj veći od 32, pa se dućina ključa ograničava na 32 karaktera.
U tom slučaju ispravno pozivanje funkcije izgledalo ovako:
echo Generator_kljuca(10, "0123456789");
Naravno, funkcija se može izmeniti tako da neki drugi parametri budu podrazumevani, a isto tako da se promeni maksimalna dužina ključa.
Skripta (funkcija) izgleda ovako:
<?php
function Generator_kljuca($duzina = 10, $karakteri = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789")
{
$MIN_DUZINA_KLJUCA = 1;
$MAX_DUZINA_KLJUCA = 32;
if ($duzina < $MIN_DUZINA_KLJUCA) $duzina = $MIN_DUZINA_KLJUCA;
if ($duzina > $MAX_DUZINA_KLJUCA) $duzina = $MAX_DUZINA_KLJUCA;
$s = "";
$broj_karaktera = strlen($karakteri) - 1;
for ($i=0; $i<$duzina; $i++)
$s .= substr($karakteri, mt_rand(0, $broj_karaktera), 1);
return $s;
}
?>
Pojašnjenje promenljivih:
- $duzina - dužina ključa.
- $MIN_DUZINA_KLJUCA - minimalna dužina ključa.
- $MAX_DUZINA_KLJUCA - maksimalna dužina ključa.
- $karakteri - spisak dozvoljenih karaktera od kojih se kreira ključ.
- $s - string u kojem se kreira ključ.
- $broj_karaktera - broj dozvoljenih karaktera od kojih se kreira ključ.
echo Generator_kljuca();
rezultat će izgledati ovako (dužine 10 karaktera, sastavljen od podrazumevanih karatkera tj cifara, malih i velikih slova):
YT7frGtsm6
Ukoliko želimo tačno određen ključ, npr dužine 8 karaktera sastavljen samo od cifara, potrebo je pozvati funkciju na sledeći način:
echo Generator_kljuca(8, "0123456789");
i dobijamo:
859649
Ako funkciju pozovemo sa parametrima koji su van opsega dozvoljene dužine ključa (u ovom slučaju od 1 do 32 karaktera):
echo Generator_kljuca(-5, "013456789");
echo Generator_kljuca(105, "013456789ABCDEF");
dobijamo:
9
10FF979653B1EF609EB43E4C005647D8
Funkciju možemo pozvati samo sa jednim karakterom, npr:
echo Generator_kljuca(10);
echo Generator_kljuca(5);
dobijamo:
pvALJ9gYji
sZodD
Ako funciju pozovemo samo sa drugim parametrom, a pri tome računamo da prvi parametar ima podrazumevanu vrednost:
echo Generator_kljuca("0123456789");
nećemo dobiti ono što želimo:
pm4liTuSK21W0MueXBHwuR6kghTj0fXS
jer se deo "0123456789" računa kao prvi parametar, a to je u ovom slučaju dužina ključa. kada se string "0123456789" pretvori u broj, dobija se broj veći od 32, pa se dućina ključa ograničava na 32 karaktera.
U tom slučaju ispravno pozivanje funkcije izgledalo ovako:
echo Generator_kljuca(10, "0123456789");
Naravno, funkcija se može izmeniti tako da neki drugi parametri budu podrazumevani, a isto tako da se promeni maksimalna dužina ključa.