Voi presupune că ați efectuat deja PBKDF2 cu cele 1000 de iterații statice definite (care este, uh, la capătul inferior al securității) și că cei doi octeți de verificare a cheii au fost validați.
AES în sine nu este diferit și se pare că Winzip nu folosește nimic special. Singurul lucru care este puțin ciudat este că contorul este în little endian. Acesta este tot codul C, deci endianness este definit de platformă și, mai ales, asta înseamnă Little Endian.
Nimic nu interzice utilizarea unui contor little endian pentru modul CTR, dar în 99% din cazuri va fi big endian. Este posibil să fie nevoie să implementați CTR-LE pe deasupra cifrului AES (sau AES-ECB, care este cam la fel).
De asemenea, rețineți că standardul ZIP - uh - definește un antet criptat, astfel încât începutul textului simplu decriptat nu va fi conținutul fișierului.
În mod similar, eticheta de autentificare este doar HMAC-SHA1-80 peste textul cifrat. HMAC-SHA1-80 este doar HMAC-SHA-1 din care sunt utilizați doar 80 de biți, adică jumătate din dimensiunea de ieșire a lui HMAC-SHA-1, de obicei biții cei mai din stânga.
Dacă sunteți blocat, m-aș uita cu atenție la cod pentru a verifica dacă nu aveți valori înapoi (de exemplu, poate că folosește octeții din dreapta HMAC, puțin probabil, dar da).