functie md5 en sha1 werkt niet

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Robert Jansen

Robert Jansen

02/10/2015 20:04:35
Quote Anchor link
Hallo,

Ik heb een functie gemaakt die kijkt of er md5 of sha1 gebruikt is. Vervolgend zou de functie het woord wachtwoord moeten encrypten. Maar dit doet hij niet.

Kan iemand mij helpen waar de fout zit?

alvast bedankt.

mijn code is:


function encrypt($invoer, $methode){
if($methode == "md5"){
return md5($invoer);
}else{
return sha1($invoer)
}


}


$invoer = "wachtwoord";
echo myHashing($invoer, $methode);
 
PHP hulp

PHP hulp

19/04/2024 19:42:17
 
Marthijn Buijs

Marthijn Buijs

02/10/2015 20:22:08
Quote Anchor link
Functienamen komen niet overeen?
Variable $methode bestaat niet onderin je script?
 
- Ariën  -
Beheerder

- Ariën -

02/10/2015 20:22:13
Quote Anchor link
Je defineert $methode niet bij het aanroepen van de functie.
 
Dos Moonen

Dos Moonen

02/10/2015 21:22:59
Quote Anchor link
https://www.parleys.com/tutorial/code-level-security-games-puzzles-java
Vanaf minuut 40 is het interessant/relevant.

Dat is het enige waarvan ik zeker weet dat het fout is.

Ok, dat is niet waar. Je lijkt md5/sha1 te willen gebruiken om wachtwoorden te hashen? Gebruik aub password_hash()
 
Pipo Clown

Pipo Clown

02/10/2015 21:47:22
Quote Anchor link
je roept de functie "encrypt()" nergens aan.

Volgens mij is de functie "encrypt()" ook een standaardfunctie van PHP dus op deze manier is het vragen om problemen.
 
Ben van Velzen

Ben van Velzen

03/10/2015 00:07:07
Quote Anchor link
Alle opmerkingen daargelaten, zo te zien is het antwoord van Maarten correct, en daarmee die van Aar ook. Ik snap niet helemaal waar opmerkingen over "oh nee je kan beter een andere functie gebruiken" vandaan komen. Dat was de vraag niet. Ook is encrypt() geen standaard PHP functie, crypt() wel.

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 encrypt ($invoer, $methode = 'sha1')
{

  if ($methode == 'md5') {
    return md5($invoer);
  }
else {
    return sha1($invoer);
  }
}


$invoer = 'wachtwoord';
echo encrypt($invoer, 'sha1'); // of laat de 2e param weg als je standaard al sha1 wilt hebben
[/code]
 
Wouter J

Wouter J

03/10/2015 00:57:29
Quote Anchor link
Ben, de extra suggesties zijn een vriendelijke service van de forum leden. md5 en sha1 zijn totaal niet meer veilig. Iets als sha256 is trouwens nog wel goed te doen en wat minder overkill als wat password_hash is (welke trouwens pas is toegevoegd in PHP 5.5).
 
Ben van Velzen

Ben van Velzen

03/10/2015 02:44:07
Quote Anchor link
Uiteraard is het handig om een suggestie te doen, maar doe het dan ook vriendelijk. Mijn punt is vooral dat het de vraag niet was, de vraag was "waarom werkt dit niet". Het antwoord daarop is niet "password_hash is veiliger".
 
Dos Moonen

Dos Moonen

03/10/2015 11:24:22
Quote Anchor link
Ik nam aan dat Robert de code niet gekopieerd en in dit topic geplakt heeft maar (iets te) snel iets vergelijkbaars heeft geschreven en daardoor een paar foutjes heeft gemaakt:
- niet overeenkomende functie namen
- het niet defineren van $methode
- het vergeten van de ; bij de tweede return

Mocht het wel gekopieerd en geplakt zijn dan kan hij een witte pagina verwachten als error reporting uit staat doordat de missende ; een parse error genereert.

@Ben
Voor zover ik weet kan hij een oude tutorial aan het volgen zijn die beweert je te leren een veilig login systeem te schrijven met behulp van md5/sha1. In dat geval denkt hij het bovenstaande stuk code werkend te hebben, terwijl hij in werkelijkheid de suggestie om password_hash() te gebruiken nodig heeft. Dat is dus waar mijn suggestie vandaan kwam.
Verder was het absoluut niet de bedoeling onvriendelijk over te komen, maar als je een topic maakt dat neer komt op "hier is niet werkende code, zoek zelf maar uit waarom ik vindt dat het niet werkt, geef me de fix" dan hoef je niet meer te verwachten dan reacties die net zo kort door de bocht zijn. Als je die wel krijgt is het mooi meegenomen.

We hebben nu niet genoeg info om je echt te helpen, Robert. Het beste dan we kunnen doen is gokken. Is de code in dit topic de exacte code die voor problemen zorgt? Wat is het resultaat wanneer je de code uitvoert? Witte pagina? Een error? Niet de output die je verwacht? iets anders?

PS. password_hash() zit inderdaad vanaf 5.5 in de core van PHP. Vanaf 5.3.7 tot 5.5 zul je extra bestanden moeten includen: https://github.com/ircmaxell/password_compat. Dat zou geen probleem moeten zijn aangezien een redelijk recente PHP versie gebruiken ook nodig is voor een veilig inlog systeem.
Gewijzigd op 03/10/2015 11:25:01 door Dos Moonen
 
Ozzie PHP

Ozzie PHP

03/10/2015 14:13:43
Quote Anchor link
Ben van Velzen op 03/10/2015 02:44:07:
Uiteraard is het handig om een suggestie te doen, maar doe het dan ook vriendelijk.

Ik moet zeggen dat ik het wel mee vind vallen met de onvriendelijke opmerkingen. Mensen praten hier vaak op een "snelle" manier. Dus in plaats van "Ik zou je ten harte aanbevelen om als encryptiemethode geen gebruik te maken van MD5." staat er dan simpelweg "Gebruik beter geen MD5.". Zover ik kan zien is het in de bovengenoemde opmerkingen nergens onvriendelijk bedoeld. En geloof me ... soms gaat het er hier ook wel eens onvriendelijk aan toe, maar dan wordt er echt op een andere manier gepraat ;-)
 
Thomas van den Heuvel

Thomas van den Heuvel

03/10/2015 18:54:14
Quote Anchor link
Sidenote: hashing is iets compleet anders dan en/decryptie.

Een functie encrypt noemen die vervolgens iets hasht is dus niet zo'n verstandige keuze...
 



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.