Am o soluție C# care criptează o grămadă de bucăți mici de date folosind AES.
//Așa configurez obiectul Aes
var aes = Aes.Create();
aes.Mode = CipherMode.CBC;
aes.KeySize = 256;
aes.Padding = PaddingMode.PKCS7;
Apoi scriu octeții de text cifrat brut în coloanele SQL Server VARBINARY.
Interogând lungimea acestor coloane de text cifrat VARBINARY, mă așteptam să fie întotdeauna un multiplu de 16 octeți. Cu toate acestea, nu pare să fie cazul aici.
Am încercat să citesc despre asta online și singurele întrebări pe care le-am găsit sunt de ce textul cifrat AES este completat cu blocuri de până la 16 octeți, așa că m-am gândit să întreb aici despre întrebarea inversă.
Note:
- Am testat decriptarea unuia dintre aceste texte cifrate de dimensiuni ciudate și a funcționat bine, astfel încât textul cifrat nu este incorect.
- Am observat că nu se întâmplă des, într-o singură cursă s-a întâmplat de 19 ori din 5.828.
- Când se întâmplă, este întotdeauna unul cu unul (31 în loc de 32, 767 în loc de 768 etc..)
M-am gândit că poate standardul AES ar putea trunchia octeții de criptare care sunt exact zero (sau un alt număr binecunoscut) de la sfârșitul ieșirii, deoarece ar putea fi reconstruiți de către decriptor? Dar mi-ar plăcea clarificări.