sql >> Database teknologi >  >> RDS >> Mysql

Hvad er længden jeg skal angive for streng krypteret med AES-256-CBC i databasen?

Blokstørrelsen på AES er 16 bytes, så du skal bruge

  • størrelsen på dit input, rundet op til det nærmeste multiplum af 16
  • plus, hvis input allerede er et multiplum af 16, én blokstørrelse for PKCS#5-udfyldningen
  • plus 16 bytes til IV

Bemærk, at dette ikke nødvendigvis gælder for andre krypteringstilstande.

Så for 20 bytes input skal du bruge i alt 48 bytes. Men , koder du også for resultatet base64, hvilket kræver mindst 33 % mere plads (dvs. du bør gemme de rå bytes, hvis du bekymrer dig om plads).

Du bør altid sammenkæde før kodning, ellers spilder du ofte plads med flere padding byte-sekvenser. Hvis dit input er 20 byte langt, producerer kodning af 32 byte chifferteksten i sig selv 44 bytes, og kodning af IV'en producerer 24 bytes (begge kræver udfyldning). Sammenkædning før kodning giver kun 64 bytes.

Sammenkædning før kodning kræver heller ikke afgrænsningen, fordi længden af ​​IV er kendt.

1 AEAD-cifre, såsom GCM, er generelt at foretrække frem for CBC, men kræver naturligvis mere plads til lagring af godkendelses-hashen.




  1. MySQL-syntaks og 'ELLER'-ydelse

  2. Mysql - Hvordan laver man en case-sensitiv søgning?

  3. MySQL hvordan udføres en kommandoblok uden en procedure/funktion

  4. Opdatering ved hjælp af PDO-erklæring