Near Final PEP 247 - API for Cryptographic Hash Functions
Boyd Roberts
boyd at insultant.net
Fri Sep 28 19:20:27 EDT 2001
"Andrew Kuchling" <akuchlin at mems-exchange.org> a écrit dans le message news: mailman.1001707952.19388.python-list at python.org...
> We program in a byte-oriented world. :)
MD5 is _bit_ orientated.
> >What exactly does update() do? Does it replace or append?
>
> "Append", meaning that the string is hashed into the current state of
> the object.
it has to appended to the current MD5 block. when you have
a whole block you can process the block. could you clarify
what you just said?
the digest is computed on the padded block and it's length:
/* pad message */
*me++ = 0x80;
if ((me - mb) > MSG_LEN0_BYTE)
{
/* digest this block and substitute a padded block */
bzero(me, MSG_BYTES - (me - mb));
md5block(mb, digest);
bzero(mb, MSG_LEN0_BYTE);
}
else
bzero(me, MSG_LEN0_BYTE - (me - mb));
/* append size in bits */
unpack(bits[0], &mb[MSG_LEN0_BYTE]);
unpack(bits[1], &mb[MSG_LEN1_BYTE]);
md5block(mb, digest);
if you want all the code:
http://home.fr.inter.net/boyd/code/md5.bundle
More information about the Python-list
mailing list