sql >> Databáze >  >> RDS >> Mysql

Jakou délku musím zadat pro řetězec zašifrovaný pomocí AES-256-CBC v databázi?

Velikost bloku AES je 16 bajtů, takže budete potřebovat

  • velikost vašeho vstupu zaokrouhlená nahoru na nejbližší násobek 16
  • a pokud je vstup již násobkem 16, jedna velikost bloku pro výplň PKCS#5
  • plus 16 bajtů pro IV

Upozorňujeme, že to nemusí nutně platit pro jiné režimy šifrování.

Takže pro 20 bajtů vstupu budete potřebovat celkem 48 bajtů. Nicméně , výsledek také kódujete base64, což vyžaduje nejméně o 33 % více místa (tj. pokud vám záleží na prostoru, měli byste ukládat nezpracované bajty).

Před kódováním byste měli vždy zřetězit, jinak často plýtváte místem vícenásobnými sekvencemi bajtů výplně. Pokud je váš vstup dlouhý 20 bajtů, kódování 32bajtového šifrového textu samo o sobě vytvoří 44 bajtů a kódování IV vytvoří 24 bajtů (oba potřebují výplň). Zřetězení před kódováním vytvoří pouze 64 bajtů.

Zřetězení před kódováním také nevyžaduje oddělovač, protože délka IV je známá.

1 Šifry AEAD, jako je GCM, jsou obecně výhodnější než CBC, ale samozřejmě vyžadují více místa pro uložení ověřovacího hashu.




  1. Použijte textový výstup z funkce jako nový dotaz

  2. MySQL, jak napsat SQL, abyste našli nadměrné transakce v 15 minutových oknech?

  3. Funkce hodnocení v MySQL

  4. Nejlepší způsob, jak vybrat náhodné řádky PostgreSQL