[PHP/MySQL] Password vergelijken met encrypt()

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • PowerSp00n
  • Registratie: Februari 2002
  • Laatst online: 19-08 08:24

PowerSp00n

There is no spoon

Topicstarter
Hey,

Ik heb passwords in een MySQL database staan en die zijn encrypted met die encrypt() functie van MySQL. Deze worden gebruikt door Postfix/Courier-IMAP waardoor het (denk ik) ingewikkelder is om bijv. md5 te gaan gebruiken omdat Courier-IMAP het dan waarschijnlijk niet meer kan controleren. Het toevoegen van een gebruiker gaat met de volgende query (ingekort en even uit het hoofd :)):

code:
1
2
3
4
5
6
INSERT INTO
   aliases
      (alias, crypt)
VALUES
   ('bla@bla.com',
   encrypt('testpassword'));


Nu wil ik met PHP/MySQL een login checken met de volgende query:

code:
1
2
3
4
5
6
7
SELECT
   id
FROM
   aliases
WHERE
   username='bla@bla.com' AND
   crypt=encrypt('testpassword')


Maar dit gaat niet, encrypt geeft steeds een andere output. Als ik een salt gebruik dan geeft het wel steeds dezelfde output, maar Courier-IMAP lukt het toch ook zonder? Output van MySQL:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
mysql> SELECT ENCRYPT('testpassword');
+-------------------------+
| ENCRYPT('testpassword') |
+-------------------------+
| MUcmAslAxq0bA           |
+-------------------------+
1 row in set (0.00 sec)

mysql> SELECT ENCRYPT('testpassword');
+-------------------------+
| ENCRYPT('testpassword') |
+-------------------------+
| PUanClHdxuT6A           |
+-------------------------+
1 row in set (0.00 sec)

mysql>


Zoeken op GoT en Google levert niet veel op, het woord encrypt wordt in veel posts gebruikt wat hier niets mee te maken heeft. Iemand die hier een oplossing voor heeft?

Acties:
  • 0 Henk 'm!

Verwijderd

Zijn de eerste twee letters van het gecodeerde wachtwoord niet de salt? Als je geen salt meegeeft bedenkt encrypt() zelf een salt, maar die is niet geheim.

Uit de crypt manual:
The returned value points to the encrypted password, a series
of 13 printable ASCII characters (the first two characters represent
the salt itself
).

[ Voor 40% gewijzigd door Verwijderd op 07-03-2003 21:21 ]


Acties:
  • 0 Henk 'm!

  • PowerSp00n
  • Registratie: Februari 2002
  • Laatst online: 19-08 08:24

PowerSp00n

There is no spoon

Topicstarter
Je hebt gelijk :P. In de MySQL manual staat alleen dat de salt onder MySQL versie 3.22.16 uit 2 tekens bestaat, maar niet dat dit de eerste 2 tekens uit de encrypted tekst is. Bedankt :)...