-
- if(!rotate_table[0])
- {
- for(unsigned i=0; i<4; ++i)
- rotate_table[i] = 7+i*5;
- for(unsigned i=0; i<4; ++i)
- rotate_table[4+i] = 5+i*4+i*i/3;
- for(unsigned i=0; i<4; ++i)
- rotate_table[8+i] = 4+i*7;
- for(unsigned i=0; i<4; ++i)
- rotate_table[12+i] = 6+i*4+i*i/3;
- }
-}
-
-void MD5::update(const char *data, unsigned len)
-{
- if(unprocessed_bytes && unprocessed_bytes+len>=64)
- {
- unsigned needed = 64-unprocessed_bytes;
- copy(data, data+needed, unprocessed+unprocessed_bytes);
- process_block(unprocessed);
- data += needed;
- len -= needed;
- unprocessed_bytes = 0;
- }
-
- while(len>=64)
- {
- process_block(data);
- data += 64;
- len -= 64;
- }
-
- if(len>0)
- {
- copy(data, data+len, unprocessed+unprocessed_bytes);
- unprocessed_bytes += len;
- }