Zelf een Hash maken.

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Pieter van Linschoten

Pieter van Linschoten

12/12/2007 14:53:00
Quote Anchor link
Hallo PHPhulpjes,

Om gelijk maar met de deur in huis te vallen: Ik liep al tijden rond met het idee om een hash te maken. Ik ben vandaag toch maar eens aan de slag gegaan, maar het is nog moeilijker dan ik dacht, om een goede, sterke hash te maken.

Wat ik heb gemaakt heet volgens mij niet eens een Hash, maar de-/encryptie.
Mijn vraag is nu, is het handig om voor je website beveiliging een eigen HASH of iets dergelijks te schrijven?

Ik neem aan van niet, maar toch lijkt het me leuk om een MOEILIJKE te maken :P.

Dit heb ik tot nu toe:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<?php
ini_set('display_errors', 'On');
error_reporting(E_ALL);

$s_Input = 'Lapidi'; #! Alleen letters & cijfers
$i_Hash = NULL;
$i_HashCode = NULL;
$i = 0;
$a_DigitsNew = NULL;
$a_Digits = array();
$i_bCounter = 0;
$s_Hash = NULL;

# Maak een array met alle verschillende tekens, A-Z, a-z en 1-9
$a_Digits = array_merge(range("a","z"),range("A","Z"),range(1,9));

# Draai de array van $a_Digits om, zodat je voor elk teken een nummer hebt.
$a_DigitsReverse = array_flip($a_Digits);

#@ Versleutelen:

for($i=0;!empty($s_Input{$i});$i++){
    # de hash zelf.
    $i_Hash .= $a_DigitsReverse[$s_Input{$i}];
    # de sleutel voor het ontsleutelen.
    $i_HashCode .= strlen($a_DigitsReverse[$s_Input{$i}]);
}

#@ Zet Sleutel + Hash bij elkaar in 1 variabele
$i_HashNew = $i_HashCode . '-' . $i_Hash;

echo $i_HashNew;
#$ Lapidi geeft output: 212111-37015838

# Gebruik de zojuist gegenereerde hash om te testen.

$i_Input = $i_HashNew;

# splits sleutel en hash.
$a_Input = explode('-',$i_Input);

#@ Ontsleutelen:
for($b=0;$b<(strlen($a_Input[0]));$b++){
    # Zoek het bijbehoordende teken met behulp van de sleutel.
    $s_Digit = $a_Digits[substr($a_Input[1],$i_bCounter,$a_Input[0]{$b})];
    
    # Doorloop de sleutel
    $i_bCounter += $a_Input[0]{$b};

    # Genereer de ontsleutelde waarde.
    $s_Hash .= $s_Digit;
}


echo'<br/>' . $s_Hash;

#$ 212111-37015838 geeft output: Lapidi
?>
Gewijzigd op 01/01/1970 01:00:00 door Pieter van Linschoten
 
PHP hulp

PHP hulp

21/12/2024 17:56:03
 
Crispijn -

Crispijn -

12/12/2007 14:58:00
Quote Anchor link
waarom zou je dit willen? alleen al dat je hem wil kunnen ontsleutelen betekend dat hij niet sterk genoeg is. Een hash hoef je niet te ontsleutelen, moet niet eens kunnen.

wat is er mis met

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
sha1()
//of de veelgebruikte
md5()
?>


???
 
Robert Deiman

Robert Deiman

12/12/2007 15:03:00
Quote Anchor link
Inderdaad, waarom zou je hem om willen kunnen draaien? Om iemand het password te kunnen mailen als die hem kwijt/ vergeten is? Nooit doen: Genereer een nieuw password. Als het zo simpel om te draaien is, is het niet veilig. Als jij het eenvoudig kan herleiden kan een ander dat ook.

Gebruik je sha1(); dan is die niet te herleiden, alleen te bruteforcen. Dat is veel beter qua beveiliging.
 
Pieter van Linschoten

Pieter van Linschoten

12/12/2007 15:14:00
Quote Anchor link
Ja, waarom zou je iets makkelijk doen, als het ook moeilijk kan.
Ik zou ook base64 kunnen gebruiken, om bijvoorbeeld bepaalde informatie te versleutelen. Het leuke lijkt mij om bijvoorbeeld een geheimtaal te maken.

Kijk, een md5 is ook wel heel erg geheim, maar die kan je naderhand niet lezen. Je kan alleen nagaan door ALLE mogenlijke combinaties na te gaan, wat iemand heeft geschreven (Bruteforce).
Maar dat hoeft niet.

Het probleem is inderdaad, dat hij ontsleutelbaar is, maar is er een mogenlijkheid om die ontsleutelbaarheid lastiger te maken?
Gewijzigd op 01/01/1970 01:00:00 door Pieter van Linschoten
 
Thijs X

Thijs X

12/12/2007 15:18:00
Quote Anchor link
Als je niet wilt dat hij ontsleutelbaar is dan moet je ergens in je hash wat data gaan weggooien
 
Crispijn -

Crispijn -

12/12/2007 15:20:00
Quote Anchor link
Hoe meer functies je er op los laat om de boel door elkaar te husselen hoe beter denk ik. Let dus wel dat je deze ook weer terug kan halen.

Hoe ga je dan zorgen voor een nette uitspuig mogelijkheid? Beter gezegt: hoe ga je zorgen dat de begunstigde van je brief die je in 'geheimtaal' hebt geschreven het netjes op zijn venster krijgt?

En je script op phphulp zetten werkt ook niet mee voor de geheimhouding ;)
 
Fabian

Fabian

12/12/2007 15:20:00
Quote Anchor link
"is er een mogenlijkheid om die ontsleutelbaarheid lastiger te maken?"

Brute force probeert gewoon alle mogelijkheden, dus is het logisch om te denken: Des te meer mogelijkheden, des te langer het duurt om de goede te vinden.

Om het moeilijker te maken kan je dus extra karakters toevoegen.
 
Crispijn -

Crispijn -

12/12/2007 15:22:00
Quote Anchor link
data weggooien is een goede optie indd. Alleen hoe presenteer je het dan weer aan de lezer?

edit: extra karakters toevoegen kan natuurlijk wel. jij weet dan de combinatie van karakters waar je extra karakters aan toevoegd. die kan je later weer strippen en hoppa, daar komt uiteindelijk je tekst!

edit 2: lapidi is back!!! incl oude avatar! toch?
Gewijzigd op 01/01/1970 01:00:00 door Crispijn -
 
Thijs X

Thijs X

12/12/2007 15:25:00
Quote Anchor link
Crispijn schreef op 12.12.2007 15:22:
data weggooien is een goede optie indd. Alleen hoe presenteer je het dan weer aan de lezer?


Je bdoelt dat je hem ook weer wilt ontsleutelen? Een hash is er juist voor bedoelt zodat je hem niet kan ontsleuteln ( decoderen ).
Want zodra je data gaat weggooien tijdens het hashen zul je het als het goed is niet meer kunnen decoderen naar de juiste waarde.
Gewijzigd op 01/01/1970 01:00:00 door Thijs X
 
Crispijn -

Crispijn -

12/12/2007 15:34:00
Quote Anchor link
hij wil er een geheimtaal van maken toch?
 
Pieter van Linschoten

Pieter van Linschoten

12/12/2007 16:00:00
Quote Anchor link
Jep, en wat voor geheimtaal. Als ik hiermee klaar ben, verkoop ik het aan de CIA, NSA en de FBI :P. Ik zie mijn kans schoon:P

Maar het inderdaad de bedoeling dat het geheimtaal word. Hier posten heeft ook weinig zin voor de geheimhouden, maar misschien schrijf ik jullie ook wel een briefje in deze geheimtaal en kan je em zelf ontcijferen (Met behulp van die code natuurlijk) ;).

Ik ga denk iets proberen met HEEL veel berekeningen enzo, en dat ie aan het einde pas een code ervan maakt. :P

Wat in principe kan ik die code die ik nu heb, weer in een andere overlaten lopen etc.



Crispijn:
edit 2: lapidi is back!!! incl oude avatar! toch?"

Fijn om weer eens inspraak te mogen hebben hier:p
 
Crispijn -

Crispijn -

12/12/2007 17:02:00
Quote Anchor link
hey, ik heb zitten denken he.

je hebt berekening x op je invoer. voer je uit -> dan pak je berekening fx met huidige datum. hiermee ga je rommelen. alle klinkers worden een veelvoud van die datum ofzo

gooi je de boel nog een keer of wat door de trommel en de code tot je geheimtaal is dus je script + datum van schrijven.

Zo heb je altijd een variabele in je geheimtaal zitten EN moet je nog eens een sleutel hebben.

Het is een idee... kijk of je er wat aan hebt zou ik zeggen
 
Pieter van Linschoten

Pieter van Linschoten

12/12/2007 17:32:00
Quote Anchor link
Ik ben er mee bezig, het is alleen wat lastiger dan ik had gedacht, maar ik denk dat ik de sleutel tot succes bezit ;)

Dankje wel voor je hulp, zo meteen heb ik waarschijnlijk wel een voorbeeldje :)
 
Crispijn -

Crispijn -

12/12/2007 17:42:00
Quote Anchor link
Ben benieuwd
 
Pieter van Linschoten

Pieter van Linschoten

12/12/2007 18:05:00
Quote Anchor link
Bijna klaar met de datum-sleutel :P

Omzetten doet ie prima, maar terughalen nog niet echt. :P
Hij geeft in iedergeval al iets terug, wat overigens meer weg heeft van een Hash dan van de text die ik invoerde :p
Gewijzigd op 01/01/1970 01:00:00 door Pieter van Linschoten
 
Pieter van Linschoten

Pieter van Linschoten

12/12/2007 18:40:00
Quote Anchor link
Edit:

Probeer deze code maar eens te ontcijferen:


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
Datum: 12122007
Geheime Code: 34344229343442293434422934344229343442293434422934344229343442293434422934344229343442293434422934344229343442293434422934343229343442293434422934344229343442293434-277929327582907368906772839074647790756889687790716865907368906768907068716872766890667867689082846666688285787590787783667273696881672765811429473947398475797368821190336867647774839085787881907168839076686867687774687790646477906768896890667867680904364797267722714792990129036727767689038687168727668903378786782667164799012

Geheime Link



Het is me gelukt om de datum in te voegen.

Met dit script laat ik hem eerst versleutelen, en daarna weer terug, om te kijken of hij het twee kanten op doet. :)

Jammer dat de code 3x zo lang wordt als de oorspronkelijke text.

Met de volgende code:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
<?php
ini_set('display_errors', 'On');
error_reporting(E_ALL);
$start = microtime();

$s_Input = 'PHPHulp 4 Life!';
$i_Key = "12122007"; #! DE SLEUTEL tot ontcijfering: date("dmY")

$i_Hash = NULL;
$i_HashCode = NULL;
$a_DigitsNew = NULL;
$a_Digits = array();
$i_bCounter = 0;
$s_Hash = NULL;
$i_HashKey = NULL;
$i_HashKeyNew = NULL;

$c=0;
$i=0;
$b=0;
$d=0;
$e=0;
$f=0;
$g=0;

# Maak een array met alle verschillende tekens, A-Z, a-z en 1-9
$a_Digits = array_merge(range("!","z")," ");

# Draai de array van $a_Digits om, zodat je voor elk teken een nummer hebt.
$a_DigitsReverse = array_flip($a_Digits);

#@ Versleutelen:

for($i=0;$i<strlen($s_Input);$i++){

    $i_Hash .= $a_DigitsReverse[$s_Input{$i}];

    $i_HashCode .= strlen($a_DigitsReverse[$s_Input{$i}]);
}


for($c=0;$c<strlen($i_HashCode);$c++){
     $i_HashKey .= bcadd($i_HashCode{$c},$i_Key{$d});
     $d++;
     if(strlen($i_Key) == $d){
        $d=0;
     }
}


$i_HashNew = $i_HashKey . '-' . $i_Hash;

#@ Dit is de versleutelde versie
echo $i_HashNew;

$i_Input = $i_HashNew;

# splits sleutel en hash.
$a_Input = explode('-',$i_Input);

for($b=0;$b<(strlen($a_Input[0]));$b++){
    $i_HashKeyNew .= bcsub($a_Input[0]{$b},$i_Key{$f});
    #Parse
    #echo "<br/><b>".$i_HashKeyNew."</b> = ".$a_Input[0]{$b} . " - " . $i_Key{$f};

    $f++;
    if(strlen($i_Key) == $f){
        $f=0;
    }
}


for($g=0;$g<strlen($i_HashKeyNew);$g++){
    $s_Digit = $a_Digits[substr($a_Input[1],$i_bCounter,$i_HashKeyNew{$g})];
    $i_bCounter = bcadd($i_bCounter,$i_HashKeyNew{$g});

    $s_Hash .= $s_Digit;
}

#@ en hier zou s_Input uit moeten komen.
echo'<br/>' . $s_Hash;

$stop = microtime();

echo'<p>Deze calculatie duurde '.($stop-$start).' seconden';
#$ 343442293434421-47394739847579901990437269680 geeft output: "PHPhulp 4 Life!" ?>


Mijn excuses voor het niet editen van vorige bericht :o
Gewijzigd op 01/01/1970 01:00:00 door Pieter van Linschoten
 
Vincent

Vincent

12/12/2007 19:52:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
Maar das tog t beste
Notice: Undefined offset: 1 in /data/members/paid/l/a/lapidi.nl/htdocs/www/ontcijfer.php on line 65

Notice: Undefined offset: 1 in /data/members/paid/l/a/lapidi.nl/htdocs/www/ontcijfer.php on line 65

Notice: Undefined offset: 1 in /data/members/paid/l/a/lapidi.nl/htdocs/www/ontcijfer.php on line 65

Notice: Undefined offset: 1 in /data/members/paid/l/a/lapidi.nl/htdocs/www/ontcijfer.php on line 65

Notice: Undefined offset: 1 in /data/members/paid/l/a/lapidi.nl/htdocs/www/ontcijfer.php on line 65

Notice: Undefined offset: 1 in /data/members/paid/l/a/lapidi.nl/htdocs/www/ontcijfer.php on line 65

Notice: Undefined offset: 1 in /data/members/paid/l/a/lapidi.nl/htdocs/www/ontcijfer.php on line 65

Notice: Undefined offset: 1 in /data/members/paid/l/a/lapidi.nl/htdocs/www/ontcijfer.php on line 65

Notice: Undefined offset: 1 in /data/members/paid/l/a/lapidi.nl/htdocs/www/ontcijfer.php on line 65

Notice: Undefined offset: 1 in /data/members/paid/l/a/lapidi.nl/htdocs/www/ontcijfer.php on line 65

Notice: Undefined offset: 1 in /data/members/paid/l/a/lapidi.nl/htdocs/www/ontcijfer.php on line 65

Notice: Undefined offset: 1 in /data/members/paid/l/a/lapidi.nl/htdocs/www/ontcijfer.php on line 65

Notice: Undefined offset: 1 in /data/members/paid/l/a/lapidi.nl/htdocs/www/ontcijfer.php on line 65

Notice: Undefined offset: 1 in /data/members/paid/l/a/lapidi.nl/htdocs/www/ontcijfer.php on line 65

Notice: Undefined offset: 1 in /data/members/paid/l/a/lapidi.nl/htdocs/www/ontcijfer.php on line 65

Notice: Undefined offset: 1 in /data/members/paid/l/a/lapidi.nl/htdocs/www/ontcijfer.php on line 65

Notice: Undefined offset: 1 in /data/members/paid/l/a/lapidi.nl/htdocs/www/ontcijfer.php on line 65

Notice: Undefined offset: 1 in /data/members/paid/l/a/lapidi.nl/htdocs/www/ontcijfer.php on line 65

Notice: Undefined offset: 1 in /data/members/paid/l/a/lapidi.nl/htdocs/www/ontcijfer.php on line 65

Notice: Undefined offset: 1 in /data/members/paid/l/a/lapidi.nl/htdocs/www/ontcijfer.php on line 65

Notice: Undefined offset: 1 in /data/members/paid/l/a/lapidi.nl/htdocs/www/ontcijfer.php on line 65

Notice: Undefined offset: 1 in /data/members/paid/l/a/lapidi.nl/htdocs/www/ontcijfer.php on line 65

Notice: Undefined offset: 1 in /data/members/paid/l/a/lapidi.nl/htdocs/www/ontcijfer.php on line 65

Notice: Undefined offset: 1 in /data/members/paid/l/a/lapidi.nl/htdocs/www/ontcijfer.php on line 65

Notice: Undefined offset: 1 in /data/members/paid/l/a/lapidi.nl/htdocs/www/ontcijfer.php on line 65

Notice: Undefined offset: 1 in /data/members/paid/l/a/lapidi.nl/htdocs/www/ontcijfer.php on line 65

Notice: Undefined offset: 1 in /data/members/paid/l/a/lapidi.nl/htdocs/www/ontcijfer.php on line 65

Notice: Undefined offset: 1 in /data/members/paid/l/a/lapidi.nl/htdocs/www/ontcijfer.php on line 65

Notice: Undefined offset: 1 in /data/members/paid/l/a/lapidi.nl/htdocs/www/ontcijfer.php on line 65

Notice: Undefined offset: 1 in /data/members/paid/l/a/lapidi.nl/htdocs/www/ontcijfer.php on line 65

Notice: Undefined offset: 1 in /data/members/paid/l/a/lapidi.nl/htdocs/www/ontcijfer.php on line 65

Notice: Undefined offset: 1 in /data/members/paid/l/a/lapidi.nl/htdocs/www/ontcijfer.php on line 65

Notice: Undefined offset: 1 in /data/members/paid/l/a/lapidi.nl/htdocs/www/ontcijfer.php on line 65

Notice: Undefined offset: 1 in /data/members/paid/l/a/lapidi.nl/htdocs/www/ontcijfer.php on line 65

Notice: Undefined offset: 1 in /data/members/paid/l/a/lapidi.nl/htdocs/www/ontcijfer.php on line 65

Notice: Undefined offset: 1 in /data/members/paid/l/a/lapidi.nl/htdocs/www/ontcijfer.php on line 65

Notice: Undefined offset: 1 in /data/members/paid/l/a/lapidi.nl/htdocs/www/ontcijfer.php on line 65

Notice: Undefined offset: 1 in /data/members/paid/l/a/lapidi.nl/htdocs/www/ontcijfer.php on line 65

Notice: Undefined offset: 1 in /data/members/paid/l/a/lapidi.nl/htdocs/www/ontcijfer.php on line 65

Notice: Undefined offset: 1 in /data/members/paid/l/a/lapidi.nl/htdocs/www/ontcijfer.php on line 65

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Deze calculatie duurde 0 seconden


nog ff fixen hè ;-)
 
Pieter van Linschoten

Pieter van Linschoten

12/12/2007 20:06:00
Quote Anchor link
Heb je de datum wel goed in gevuld, zoals daar staat?

12122007 ipv 12-12-2007 ;)
 
Onbekend Onbekend

Onbekend Onbekend

12/12/2007 20:06:00
Quote Anchor link
Ik snap niet waarom mensen zo klagen over dat md5 en/of sha1 te bruteforcen is? Het staat in je database en als die goed beveildigd is kan daar toch niemand bij..
 
Pieter van Linschoten

Pieter van Linschoten

12/12/2007 20:22:00
Quote Anchor link
Het wachtwoord van je Database valt ook te bruteforcen ;)

Mij hoor je er niet overklagen. Het gaat er alleen om, dat wanneer die informatie in verkeerde handen zou vallen, ze er weinig mee kunnen, dan net als een cijferslot op je fiets alle mogenlijkheden te proberen.

Heeft iemand trouwens mijn code al ontcijferd?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
Datum (Sleutel): 12122007
Geheime Code: 34344229343442293434422934344229343442293434422934344229343442293434422934344229343442293434422934344229343442293434422934343229343442293434422934344229343442293434-277929327582907368906772839074647790756889687790716865907368906768907068716872766890667867689082846666688285787590787783667273696881672765811429473947398475797368821190336867647774839085787881907168839076686867687774687790646477906768896890667867680904364797267722714792990129036727767689038687168727668903378786782667164799012

Geheime Link
Gewijzigd op 01/01/1970 01:00:00 door Pieter van Linschoten
 
Vincent

Vincent

12/12/2007 20:26:00
Quote Anchor link
Aangezien er stond: ddmmjj
dacht ik 221292
maar ik zal is proberen op jou manier
groeten :-)
 

Pagina: 1 2 volgende »



Overzicht Reageren

 
 

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.