Urmează instrucțiunile de pe https://datatracker.ietf.org/doc/html/rfc5649#section-3 ("AES Key Wrap with Padding Algorithm") și am ajuns la un punct în care trebuie să generez LSB(32,A)
pentru Valoare inițială alternativă (AIV). Folosesc NodeJS cu tampoane pentru a implementa algoritmul. Înțelegerea mea este 32 de biți === buffer.lungime == 4
sau cu alte cuvinte, lungimea 4 a tamponului este cei 32 de biți la care se face referire în articol. Am completat cheia după ce am convertit-o tampon, apoi am umplut cu valoarea lungimii de 8 - (lungime % 8)
cu 0s
la valoarea indicată în articol. Acum lucrul pe care nu am reușit să-mi dau seama este să obțin valoarea MLI pe 32 de biți
. Cum obțin MLI
, eu doar o stiu Indicator de lungime a mesajului
dar asta e tot ce știu despre asta.
Exemplu:
const key = Buffer.from('base64 key', 'base64');
const kek = Buffer.from('A65959A6', 'hex');
Acum aici am doar MSB(32, A)
dar nu LSB(32, A)
, cum obțin valoarea și este ceva ce fac greșit, vă rog să vă ajutați. Am petrecut deja mult timp încercând să-mi dau seama.
Scenariu: Să presupunem că lungimea cheii mele este de 75, acum trebuie să amplă restul de 5 caractere pentru ca acesta să fie multipli de 8, acum cum pot genera LSB(32, A)
în acest caz?