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

Qual è la lunghezza che devo specificare per la stringa crittografata con AES-256-CBC nel database?

La dimensione del blocco di AES è di 16 byte, quindi avrai bisogno di

  • la dimensione del tuo input, arrotondata al multiplo più vicino di 16
  • in più, se l'input è già un multiplo di 16, una dimensione del blocco per il riempimento PKCS#5
  • più 16 byte per l'IV

Nota che questo non si applica necessariamente ad altre modalità di cifratura.

Quindi per 20 byte di input avrai bisogno di un totale di 48 byte. Comunque , stai anche codificando in base64 il risultato, che richiede almeno il 33% di spazio in più (ovvero dovresti memorizzare i byte grezzi se ti interessa lo spazio).

Dovresti sempre concatenare prima della codifica, altrimenti spesso sprechi spazio con più sequenze di byte di riempimento. Se l'input è lungo 20 byte, la codifica del testo cifrato a 32 byte da sola produce 44 byte e la codifica dell'IV produce 24 byte (entrambi necessitano di riempimento). Il concatenamento prima della codifica produce solo 64 byte.

Anche la concatenazione prima della codifica non richiede il delimitatore, perché la lunghezza dell'IV è nota.

1 I codici AEAD, come GCM, sono generalmente preferibili rispetto a CBC, ma ovviamente richiedono più spazio per archiviare l'hash di autenticazione.