primero , lo mejor era que preguntes en el foro de PYTHON para que encuentres explicacion, del funcionamiento, luego en php hacer la traduccion, ya que habra funciones que hacen lo mismo pero con distinto nombre
y de esa explicacion, ya partes y realias pruebas AISLADAS parte por parte como ejemplo
puedes aislar este fragmento
Código Python:
Ver originaldef _encode_impl(cls, password, salt):
md5 = hashlib.md5()
md5.update((salt + password).encode('utf-8'))
return (md5.digest(),)
y en un archivo python aparte, probar que es lo que devuelve el "digest()"
Código Python:
Ver originalimport hashlib
md5 = hashlib.md5()
md5.update(("salt + password").encode('utf-8'))
print (md5.digest(),md5.hexdigest())
y retorna
Código C:
Ver originalb'\xe0\xe1}\xa4\x048\xc7\xe4\x0fY\xa0\xbf<p\xe4\xd4'
e0e17da40438c7e40f59a0bf3c70e4d4
por ejemplo aca muestra que el md5.digest, antepone una
b' que indica BYTES eso creo jeeje
por lo cual seria de suponer que es un MD5 en modo RAW
php seria segun el manual
http://es.php.net/manual/en/function.md5.php
Código PHP:
Ver originalmd5("salt + password",true); //como resultado seran texto en bytes