void gt_md5_encoder_finish(GtMD5Encoder *enc, unsigned char *output, char *outstr) { gt_assert(enc && output); if (enc->status != 2) { if (enc->len > 0) { digest(enc->wbuff, enc->d); enc->d[0]+=enc->d_old[0]; enc->d[1]+=enc->d_old[1]; enc->d[2]+=enc->d_old[2]; enc->d[3]+=enc->d_old[3]; } enc->d_old[0]=enc->d[0]; enc->d_old[1]=enc->d[1]; enc->d_old[2]=enc->d[2]; enc->d_old[3]=enc->d[3]; enc->status = converte(enc->wbuff, NULL, 0, enc->status); gt_assert(enc->status == 2); } put_length(enc->wbuff, enc->len); digest(enc->wbuff, enc->d); enc->d[0]+=enc->d_old[0]; enc->d[1]+=enc->d_old[1]; enc->d[2]+=enc->d_old[2]; enc->d[3]+=enc->d_old[3]; word32tobytes(enc->d, (char*) output); if (outstr) { snprintf(outstr, 33, "%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x", output[0], output[1], output[2], output[3], output[4], output[5], output[6], output[7], output[8], output[9], output[10], output[11], output[12], output[13], output[14], output[15]); } }
void Huff_Ccitt_2D_T6::write(const U_INT1 * vals) { ElSwap(_cur,_prec); _a0 = -1; _coul = 0; _prec[_a0] = 0; _cur[_a0] = 0; memcpy(_cur,vals,_tx); while (_a0 != _tx) { calc_a1(); calc_b1(); calc_b2(); if (_b2 < _a1) { put(_ht_pass); _a0 = _b2; } else { INT dif = _a1-_b1; if ((dif<=3) && (dif >=-3)) { put(_hvert->_tab[dif+3]); _coul = ! _coul; _a0 = _a1; } else { calc_a2(); put(_ht_horz); put_length(_a1-ElMax(_a0,0),_coul); put_length(_a2-_a1,!_coul); _a0 = _a2; } } } }
void MPD_CCIT_T6::put_length_gray(INT l) { if (l<=max_l_gr) { put(_hmpd->_tab[l]); } else { put(_ht_huf_bl); put_length(l-max_l_gr,0); } }
static void md5_close (const char *message, size_t len, WORD32 d[4], size_t total) { int status = 0; long i = 0; while (status != 2) { WORD32 d_old[4]; WORD32 wbuff[16]; int numbytes = (len-i >= 64) ? 64 : len-i; /*salva os valores do vetor digest*/ d_old[0]=d[0]; d_old[1]=d[1]; d_old[2]=d[2]; d_old[3]=d[3]; status = converte(wbuff, message+i, numbytes, status); if (status == 2) put_length(wbuff, total); digest(wbuff, d); d[0]+=d_old[0]; d[1]+=d_old[1]; d[2]+=d_old[2]; d[3]+=d_old[3]; i += numbytes; } }
void MPD_CCIT_T6::write(const U_INT1 * vals) { _line++; _vals = const_cast<U_INT1 *> (vals); _bin[-1] = 0; _bin[_tx] = 0; _bin[_tx+1] = 1; for (INT i=0; i<_tx ; i++) _bin[i] = (vals[i]!=_vmax) ; Huff_Ccitt_2D_T6::write(_bin); INT a0 = -1; for(;;) { a0 = end_pl_white(a0); if (a0 >= _tx) { return; } INT a1 = end_pl_gray(a0); INT a2 = end_pl_pure_black(a1); INT a3 = end_pl_gray(a2); while (_bin[a3]) { put(1,1); put_plage_gray(a0,a1); put_length(a2-a1,0); a0 = a2; a1 = a3; a2 = end_pl_pure_black(a1); a3 = end_pl_gray(a2); } put(0,1); put_plage_gray(a0,a1); put_plage_gray(a2,a3); a0 = a3; } }
void md5 (const char *message, long len, char *output) { WORD32 d[4]; int status = 0; long i = 0; inic_digest(d); while (status != 2) { WORD32 d_old[4]; WORD32 wbuff[16]; int numbytes = (len-i >= 64) ? 64 : len-i; /*salva os valores do vetor digest*/ d_old[0]=d[0]; d_old[1]=d[1]; d_old[2]=d[2]; d_old[3]=d[3]; status = converte(wbuff, message+i, numbytes, status); if (status == 2) put_length(wbuff, len); digest(wbuff, d); d[0]+=d_old[0]; d[1]+=d_old[1]; d[2]+=d_old[2]; d[3]+=d_old[3]; i += numbytes; } word32tobytes(d, output); }
void Huff_Ccitt_1D_Codec::write(const U_INT1 * im,INT nb_tot) { INT coul = 0; INT x0 = 0; while(x0 != nb_tot) { INT x1; for ( x1=x0; x1<nb_tot && (im[x1] == coul); x1++ ) ; put_length(x1-x0,coul); coul = !coul; x0 = x1; } reset(); }