Я построил пару DLL из источника. Они в основном из одного источника, sqlite-3.6.22, Open SSL 0.9.8 и sqlcipher.
Причина, по которой я построил два, заключалась в том, что мне нужен был один для работы с проектом C ++, а другой - как драйвер JDBC для java (то есть java jni dll).
Теперь у меня есть две библиотеки DLL, я могу писать и создавать базы данных на C ++ и C # (используя C one), а также на Java. Оба они отвечают, как я и ожидал, вы можете открыть их, если вы дадите правильный пароль, он потерпит неудачу, если вы дадите неправильный пароль и т. Д.
Теоретически оба должны быть по умолчанию для sqlcipher, который жестко закодирован в aes-256-cbc.
Тем не менее, я не могу открыть базу данных, созданную одной с другой. Я могу открыть базу данных, созданную с помощью версии c, в SQLite3 Management studio, но только если я поставлю пароль с выбранным RSA, я не смогу открыть созданную в Java версию ни в каком другом, что у меня есть.
Другое дело, что, если я создаю две базы данных с идентичным содержимым с базой данных c, они байт для байта идентичны, тогда как java - нет.
Я уверен, что делаю что-то явно неправильное, но я действительно не вижу этого - насколько я вижу, что java работает нормально (по некоторым причинам легче отлаживать).