Se pare că această cheie are deja numărul necesar de cuvinte de 32 de biți pentru 128 sau 192 (deoarece aceasta este extinderea cheii pentru 6 coloane sau mai puțin), dar cum ați obține asta din parola de lungime aleatorie a unui utilizator?
Parolele nu sunt chei în sine.
Pentru a obține o cheie dintr-o parolă, ați folosi o funcție de derivare a cheii pe bază de parolă. Puteți utiliza funcții precum PBKDF2, Argon2 sau hashing Balloon. Alți algoritmi bine cunoscuți sunt bcrypt și scrypt.
Ar fi fost deja rulat PKCS7, astfel încât cheia să fie căptușită?
Nu, umplutura compatibilă cu PKCS#7 este ceea ce rulați pe textul simplu (sau - atunci când este implementat eficient - pe buffer-ul de dimensiunea blocului care este folosit pentru criptare / decriptare în timpul ultimei operațiuni de criptare). Cheia nu are nevoie de o metodă de umplutură atunci când este generată/derivată corect; ar trebui să aibă întotdeauna dimensiunea potrivită - și altfel umplutura zero ar funcționa bine.
Aceasta arată că cheia introdusă efectiv de utilizator face parte din programul de chei sau toate cheile din program derivă din cheia de introducere brută reală a utilizatorului?
Cheile simetrice constau din biți/octeți. Deci, o cheie AES este formată din 128, 192 sau 256 de biți / 16, 24 sau, respectiv, 32 de biți. Orice altceva decât asta nu este o cheie AES. Un șir de caractere nu este, în general, considerat o cheie, deși ar putea fi o codificare hex sau în bază64 a unei chei. Dacă este un șir de orice dimensiune, atunci este în general considerat o parolă.
În ceea ce privește programul de taste intern al AES: Nu, prima rundă poate folosi foarte bine tasta de introducere originală. După cum puteți vedea valoarea j
nu începe cu j
. Acest lucru are sens, programarea cheilor se asigură că subcheile sunt suficient de diferite, astfel încât informațiile unei subchei ulterioare să nu prezinte nicio informație despre o subcheie anterioară.