Seite 1 von 1

md5 in Python anders als in PHP

Verfasst: Donnerstag 5. Juni 2008, 06:56
von Kuttengeier
Hi,

ich möchte einen md5wert ausgeben. Als beispiel: "lol". In Python scheint der jedoch anders als in PHP zu sein.

PHP: 9cdfb439c7876e703e307864c9167a15
Python: c7951283431eedddf677f934b7eba72d

Mein Python code:

Code: Alles auswählen

import md5
m = md5.new()
m.update("lol")
print m.hexdigest()
Es ist ziemlich wichtig, dass die beiden Codes identisch sind.

Würde mich über Hilfe freuen.

Kuttengeier

Verfasst: Donnerstag 5. Juni 2008, 07:14
von Hyperion
Eigentlich sollte so etwas ja nicht passieren - oder habe ich md5 falsch verstanden?

Könnte es ggf. etwas mit der Kodierung der Zeichen zu tun haben, die Du in die Funktion gibst? Sind die in Python und PHP identisch?

Ansonsten gib uns doch mal das BSP aus PHP, damit wir ggf. vergleichen können.

Verfasst: Donnerstag 5. Juni 2008, 07:27
von veers
[veers@castle ~]$ php
<?=md5("lol");?>
9cdfb439c7876e703e307864c9167a15

[veers@castle ~]$ python
Python 2.5.2 (r252:60911, Feb 23 2008, 21:20:32)
[GCC 4.2.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import hashlib
>>> h = hashlib.md5()
>>> h.update("lol")
>>> h.hexdigest()
'9cdfb439c7876e703e307864c9167a15'
Scheint zu tun ;)

Verfasst: Donnerstag 5. Juni 2008, 07:33
von Kuttengeier
Danke, hat geklappt :)

Kuttengeier

Verfasst: Donnerstag 5. Juni 2008, 08:40
von jens
Und wo lag der Fehler?

Verfasst: Donnerstag 5. Juni 2008, 08:42
von Kuttengeier
Keine Ahnung. Vielleicht das Falsche Objekt.

Kuttengeier

Verfasst: Donnerstag 5. Juni 2008, 09:51
von tux21b
oder falsche Funktion?

Code: Alles auswählen

>>> from md5 import md5
>>> md5('lol').hexdigest()
'9cdfb439c7876e703e307864c9167a15'

Verfasst: Donnerstag 5. Juni 2008, 09:54
von jens
Egal wie ich es mache, es kommt immer das selbe heraus, was ja auch richtig ist:

Code: Alles auswählen

import md5
import hashlib

print md5.md5('lol').hexdigest()

m = md5.new()
m.update("lol")
print m.hexdigest()

print hashlib.md5("lol").hexdigest()

h = hashlib.md5()
h.update("lol")
print h.hexdigest()

Verfasst: Donnerstag 5. Juni 2008, 18:04
von BlackVivi
Encodings?... Könnte ich mir am ehesten vorstellen.

Verfasst: Dienstag 10. Juni 2008, 21:12
von Joghurt
Ich vermute ein newline am Ende des Strings. Also z. B. eine Zeile einer Datei eingelesen und davon die MD5 berechnet.