Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jaką długość muszę określić dla ciągu zaszyfrowanego za pomocą AES-256-CBC w bazie danych?

Rozmiar bloku AES to 16 bajtów, więc będziesz potrzebować

  • rozmiar danych wejściowych, zaokrąglony w górę do najbliższej wielokrotności 16
  • plus, jeśli dane wejściowe są już wielokrotnością 16, jeden rozmiar bloku dla dopełnienia PKCS#5
  • plus 16 bajtów dla IV

Pamiętaj, że niekoniecznie dotyczy to innych trybów szyfrowania.

Tak więc na 20 bajtów danych wejściowych potrzebujesz łącznie 48 bajtów. Jednak , kodujesz również wynik base64, co wymaga co najmniej 33% więcej miejsca (tzn. powinieneś przechowywać surowe bajty, jeśli zależy ci na miejscu).

Zawsze powinieneś łączyć przed kodowaniem, w przeciwnym razie często marnujesz miejsce na wiele sekwencji bajtów dopełniających. Jeśli twoje dane wejściowe mają długość 20 bajtów, samo zakodowanie 32-bajtowego zaszyfrowanego tekstu daje 44 bajty, a kodowanie IV daje 24 bajty (oba wymagają uzupełnienia). Konkatenacja przed kodowaniem daje tylko 64 bajty.

Łączenie przed kodowaniem również nie wymaga separatora, ponieważ długość IV jest znana.

Szyfry 1 AEAD, takie jak GCM, są generalnie lepsze niż CBC, ale oczywiście wymagają więcej miejsca do przechowywania skrótu uwierzytelniania.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak zaktualizować tę samą tabelę po usunięciu w MYSQL?

  2. Bezpieczny sposób przechowywania kluczy szyfrowania - PHP

  3. MYSQL - Zmiana roku dat z 2020 na 2011

  4. Instalowanie mysql-pythona na Centos

  5. Jak mogę uzyskać wartość zmiennej konfiguracyjnej MySQL 'ft_min_word_len' za pomocą PHP?