if (env->RegisterNatives(javaClass, methods, sizeof(methods) / sizeof(methods[0])) < 0)
return JNI_ERR;
В таком случае, вам не нужно будет переименовывать все эти методы, если вдруг понадобиться, например, изменить имя пакета или что-то другое, ну и исчезнут эти монструозные названия методов.
Осталось непонятным, как поменять пароль для уже созданной и зашифрованной по этому паролю БД.
Смена пароля предусмотрена. Для этого есть такой метод как sqlite3_rekey.
/*
** Change the key on an open database. If the current database is not
** encrypted, this routine will encrypt it. If pNew==0 or nNew==0, the
** database is decrypted.
**
** The code to implement this API is not available in the public release
** of SQLite.
*/
SQLITE_API int sqlite3_rekey(
sqlite3 *db, /* Database to be rekeyed */
const void *pKey, int nKey /* The new key */
);
SQLITE_API int sqlite3_rekey_v2(
sqlite3 *db, /* Database to be rekeyed */
const char *zDbName, /* Name of the database */
const void *pKey, int nKey /* The new key */
);
Если вопрос о том, как формируется блок данных, то для ECB режима используется PKCS#5
Если вопрос в том, как читает/пишет сам девайс, то тут все просто: для чтения — QIODevice имеет внутренний буфер в который считываются данные, для записи — есть буфер в самом классе, который содержит данные, размер которых не дотягивает до размера блока. Этот буфер записывается либо при flush(), либо при close().
Интересный вариант, мы его рассматривали, но решили применить именно хеширование для ускорения и простоты данной проверки. Хотя, возможно, вариант с crc и не повлиял бы на скорость проверки ключа.
а сделать так:
и в методе
зарегистрировать указанные нативные методы
В таком случае, вам не нужно будет переименовывать все эти методы, если вдруг понадобиться, например, изменить имя пакета или что-то другое, ну и исчезнут эти монструозные названия методов.
Примерно как-то так:
Смена пароля предусмотрена. Для этого есть такой метод как sqlite3_rekey.
Если вопрос в том, как читает/пишет сам девайс, то тут все просто: для чтения — QIODevice имеет внутренний буфер в который считываются данные, для записи — есть буфер в самом классе, который содержит данные, размер которых не дотягивает до размера блока. Этот буфер записывается либо при flush(), либо при close().