Mysql
 sql >> Base de données >  >> RDS >> Mysql

Quelle est la longueur que je dois spécifier pour la chaîne chiffrée avec AES-256-CBC dans la base de données ?

La taille de bloc d'AES est de 16 octets, vous aurez donc besoin de

  • la taille de votre entrée, arrondie au multiple de 16 le plus proche
  • plus, si l'entrée est déjà un multiple de 16, une taille de bloc pour le rembourrage PKCS#5
  • plus 16 octets pour l'IV

Notez que cela ne s'applique pas nécessairement aux autres modes de chiffrement.

Donc, pour 20 octets d'entrée, vous aurez besoin d'un total de 48 octets. Cependant , vous encodez également le résultat en base64, ce qui nécessite au moins 33 % d'espace supplémentaire (c'est-à-dire que vous devez stocker les octets bruts si vous vous souciez de l'espace).

Vous devez toujours concaténer avant d'encoder, sinon vous gaspillez souvent de l'espace avec plusieurs séquences d'octets de remplissage. Si votre entrée a une longueur de 20 octets, l'encodage du texte chiffré de 32 octets produit à lui seul 44 octets et l'encodage de l'IV produit 24 octets (les deux nécessitent un rembourrage). La concaténation avant l'encodage ne produit que 64 octets.

La concaténation avant l'encodage ne nécessite pas non plus le délimiteur, car la longueur de l'IV est connue.

1 Les chiffrements AEAD, tels que GCM, sont généralement préférables à CBC, mais nécessitent évidemment plus d'espace pour stocker le hachage d'authentification.