Random Hash

Door Iltar van der berg, 19 jaar geleden, 5.082x bekeken

Een handige toolbox functie (voor namespacing: Toolbox::createHash()).

Gebruikt een compleet random systeem om zo random mogelijk te maken en daaracher de time te plakken en vervolgens te hashen.

Handig voor licenties/activatie codes/andere unieke dingen.

Gesponsorde koppelingen

PHP script bestanden

  1. random-hash

 

Er zijn 10 reacties op 'Snippets'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
PHP Newbie
PHP Newbie
19 jaar geleden
 
0 +1 -0 -1
Misschien nog even wat functie argumenten meegeven dat je alleen (hoofd)letters wilt, of alleen cijfers of geen vreemde tekens.

Zoiets dus
Iltar van der berg
iltar van der berg
19 jaar geleden
 
0 +1 -0 -1
Waarom zou je dat niet willen ? Het word toch een md5 of sha1... Met word hij alleen maar moeilijker te ontcijferen.
Marcel
Marcel
19 jaar geleden
 
0 +1 -0 -1
$special = explode('a', '!a@a#a$a%a^a&a*a(a)a_a+a-a=a[a]a{a}a:a;aa\'a"a?a/a.a>a,a<a\\a`a~a a|a¤a½a¼a½a¾a¥a’a‘');
->
$special = str_split('!@#$%^&*()_+-=[]{}:;a'"?/.>,<\\`~ |¤½¼½¾¥’‘');
Reen
Reen
19 jaar geleden
 
0 +1 -0 -1
snap het nut niet van randomly tussen hashes te wisselen. Maar deze functie voldoet naar mijn mening beter aangezien hij sneller is en even random.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
function createHash()
{

     return sha1('Mijn geheime code, die op elke site anders moet zijn!'.mt_rand(38724, 83618947));
}

?>


Wedden dat je m nooit kan raden, zeker als je het gedeelte met 'Mijn geheime code, die op elke site anders moet zijn!', ook daadwerkelijk veranderd op elke site, overigens zou ik die tekst groter houden dan 20 tekens om rainbow tables tegen te gaan.

Overigens maak je ook een "logische fout" in je script:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
for($i = 0; $i < rand(16, 32); $i++)
?>


Je zou zeggen dat deze een kans van 1 op 16 heeft om 32 keer te loopen, echter is de kans maar 1 op 20922789888000 (namelijk 16!*) omdat het getal telkens opnieuw berekend wordt. In dit geval overigens niet fataal, maar zeker wel iets om over na te denken.

Cheers

Edit:
* de ! is de wiskundige uitdrukking voor Facolteit
Iltar van der berg
iltar van der berg
19 jaar geleden
 
0 +1 -0 -1
Dus Reen, wat bedoel je nu ? Dat hij TE traag word door die random ? en random een sha1 of md5 is erg handig

Dat van die str_split zal ik aanpassen ^^
Reen
Reen
19 jaar geleden
 
0 +1 -0 -1
'Dat hij TE traag word door die random'
Als performance een issue is, dan kun je jou script beter niet gebruiken nee.

"en random een sha1 of md5 is erg handig"
Waarom als ik vragen mag?

En stel dat dat dan zo zou zijn:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
function createHash()
{

    $str = 'Mijn geheime code, die op elke site anders moet zijn!'.mt_rand(38724, 83618947);
    switch(mt_rand(0, 1))
    {
        case
1:
            return sha1($str);
         default:

            return md5($str);
    }
}

?>


Dan ben je er ook, met stukken minder code.
Reen
Reen
19 jaar geleden
 
0 +1 -0 -1
Overigens heb ik net een testrun gedaan van 10 minuten:
In die tijd was de kans om 32 te krijgen ongeveer 1 op 2315068 (was al bang dat me berekening niet klopte, echter te laat voor kansberekening :))
Iltar van der berg
iltar van der berg
19 jaar geleden
 
0 +1 -0 -1
Het gaat er niet om dat hij er 32 doet, 19 is net zo goed, dat zijn allemaal random characters die random uit 3 arrays worden gehaalt en daar word een time bij gezet, en random sha1 hash of md5
Richard van Velzen
Richard van Velzen
19 jaar geleden
 
0 +1 -0 -1
Waarom niet gewoon:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
function randomHash() {
    $return = md5(uniqid('prefixje', true));
    for($i = 0; $i < mt_rand(10, 25) * 3; ++$i) {
        $return .= chr(mt_rand(1, 255));
    }

    return sha1($return);
}

?>


En zo nog een hele hoop functies er doorheen. :)
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Reen
Reen
19 jaar geleden
 
0 +1 -0 -1
@iltar van der berg:
Het gaat om het idee dat dit stukje code niet doet wat je verwacht.

@Richard van Velzen:
Omdat die meer resources kost dan de mijne... En even random is.

Om te reageren heb je een account nodig en je moet ingelogd zijn.

Inhoudsopgave

  1. random-hash

Labels

  • Geen tags toegevoegd.

Navigatie

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.