MD4 and DES for unicode strings (samba passwd file manipulation)

Fredrik Lundh fredrik at
Wed Sep 4 03:14:12 EDT 2002

Arcady Genkin wrote:

> And yet I can't create the right crypted strings:
>   >>> from Crypto.Hash import MD4
>   >>>
>   >>> m =
>   >>> m.update( u'111222333' )
>   >>> m.hexdigest().upper()
>   'A672E5EDFDAD90A15228E0AEC2AA9161'
>   >>> # SAMBA-encoded password "111222333":
>   >>> samba
>   'B66B458E27BD714F99A05EE3C479FBF1'
> Perhaps the problem lies with Unicode encoding?  Samba's man page (see
> the link below) says that the string is obtained by taking MD4 hash on
> the password, represented as a string of 16-bit little-endian unicode
> characters.

if you want a string of 16-bit little-endian unicode characters,
make sure you have one:

    m =

(I don't have the MD4 library, so I cannot verify this.  But if
it works, it works for both 8-bit strings with ASCII text, and
Unicode strings)


More information about the Python-list mailing list