Доброго времени суток. Нужно зашифровать sqlite3 базу и расшифровывать ее перед использованием. Хочется получить результат, похожий на тот, что дает консольный инструмент gpg при симметричном шифровании. Для шифрования я выбрал aes_256_gcm, для генерации ключа из парольной фразы - PKCS5_PBKDF2_HMAC.
- Где хранить вектор инициализации?
- Где хранить соль?
- Правильно ли использовать RAND_bytes для генерации соли? (Я понимаю, что генерируются байты, а не символы ASCII)
- Какая длинна соли и сколько итераций являются оптимальными?
- gpg неплохо сжимает данные после шифрования. Как добится такого же эффекта? Нужно использовать отдельную библиотеку для сжатия?
- Как определить, что пользователь ввел неверный пароль для расшифровки?