sql >> Database >  >> RDS >> Mysql

Wat is de lengte die ik moet specificeren voor string versleuteld met AES-256-CBC in de database?

De blokgrootte van AES is 16 bytes, dus je hebt

  • de grootte van uw invoer, afgerond op het dichtstbijzijnde veelvoud van 16
  • plus, als de invoer al een veelvoud van 16 is, één blokgrootte voor de PKCS#5 opvulling
  • plus 16 bytes voor de IV

Merk op dat dit niet noodzakelijk van toepassing is op andere coderingsmodi.

Dus voor 20 bytes invoer heb je in totaal 48 bytes nodig. Echter , je codeert ook base64 voor het resultaat, waarvoor ten minste 33% meer ruimte nodig is (d.w.z. je zou de onbewerkte bytes moeten opslaan als je om ruimte geeft).

U moet altijd aaneenschakelen voordat u codeert, anders verspilt u vaak ruimte met meerdere opvulbytereeksen. Als uw invoer 20 bytes lang is, levert het coderen van de 32 bytes cijfertekst op zichzelf 44 bytes op, en het coderen van de IV levert 24 bytes op (beide hebben opvulling nodig). Aaneenschakelen vóór codering levert slechts 64 bytes op.

Aaneenschakeling vóór codering vereist ook geen scheidingsteken, omdat de lengte van de IV bekend is.

1 AEAD-coderingen, zoals GCM, hebben over het algemeen de voorkeur boven CBC, maar vereisen uiteraard meer ruimte voor het opslaan van de authenticatie-hash.




  1. Top n elementen van een groep selecteren in Oracle

  2. Hoe beperkingen voor externe sleutels in SQL Server-database voor alle tabellen te verwijderen - SQL Server / TSQL-zelfstudie, deel 72

  3. MySQL:meerdere kolommen retourneren uit een in-line subquery

  4. Importeer mysql-dump met php