Mysql
 sql >> база данни >  >> RDS >> Mysql

Каква е дължината, която трябва да посоча за низ, шифрован с AES-256-CBC в базата данни?

Размерът на блока на AES е 16 байта, така че ще ви трябва

  • размера на вашия вход, закръглен до най-близкото кратно на 16
  • плюс това, ако входът вече е кратен на 16, един размер на блока за подложката PKCS#5
  • плюс 16 байта за IV

Имайте предвид, че това не се отнася непременно за други режими на шифър.

Така че за 20 байта вход ще ви трябват общо 48 байта. Въпреки това , вие също кодирате base64 резултата, което изисква поне 33% повече място (т.е. трябва да съхранявате необработените байтове, ако ви е грижа за пространството).

Винаги трябва да свързвате преди кодиране, в противен случай често губите място с множество последователности от байтове за допълване. Ако вашият вход е с дължина 20 байта, кодирането на 32-байтовия шифрован текст сам по себе си произвежда 44 байта, а кодирането на IV произвежда 24 байта (и двете се нуждаят от подпълване). Свързването преди кодиране произвежда само 64 байта.

Конкатенацията преди кодиране също не изисква разделител, тъй като дължината на IV е известна.

1 Шифровите AEAD, като GCM, обикновено са за предпочитане пред CBC, но очевидно изискват повече място за съхраняване на хеша за удостоверяване.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да изтриете записи в DB с mySQL, като използвате group by

  2. МИНУС в MySQL?

  3. Как да изчислим времевата разлика между текущия и предишния ред в MySQL

  4. Как мога да отменя изявление на mysql, което току-що изпълних?

  5. Кеш на подготвени изявления с MySQL &JDBC