Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Berapa panjang yang harus saya tentukan untuk string yang dienkripsi dengan AES-256-CBC di database?

Ukuran blok AES adalah 16 byte, jadi Anda memerlukan

  • ukuran masukan Anda, dibulatkan ke kelipatan terdekat dari 16
  • plus, jika input sudah kelipatan 16, satu ukuran blok untuk padding PKCS#5
  • ditambah 16 byte untuk IV

Perhatikan bahwa ini tidak selalu berlaku untuk mode sandi lainnya.

Jadi untuk 20 byte input, Anda memerlukan total 48 byte. Namun , Anda juga mengkodekan hasil base64, yang membutuhkan setidaknya 33% lebih banyak ruang (yaitu Anda harus menyimpan byte mentah jika Anda peduli dengan ruang).

Anda harus selalu menggabungkan sebelum penyandian, jika tidak, Anda sering membuang-buang ruang dengan beberapa urutan byte padding. Jika input Anda panjangnya 20 byte, encoding ciphertext 32 byte dengan sendirinya menghasilkan 44 byte, dan encoding IV menghasilkan 24 byte (keduanya membutuhkan padding). Penggabungan sebelum encoding hanya menghasilkan 64 byte.

Penggabungan sebelum penyandian juga tidak memerlukan pembatas, karena panjang IV diketahui.

1 Cipher AEAD, seperti GCM, umumnya lebih disukai daripada CBC, tetapi jelas membutuhkan lebih banyak ruang untuk menyimpan hash otentikasi.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mengapa MYSQL DB mengembalikan nilai yang rusak saat rata-rata di atas model Django.DateTimeField?

  2. masukkan karakter Unicode di databsae

  3. menyimpan jumlah uang di mysql

  4. Saran kueri MySQL diperlukan

  5. Integer vs char untuk properti record DB