Ist es möglich, zu überprüfen, ob ein bestimmter Schlüssel eine korrekte Entschlüsselung für bereits geöffnete und entsperrte Datenbanken ist?SQLCipher: Schlüssel gegen geöffnete Datenbank überprüfen
#define SQLITE_HAS_CODEC
#include <sqlcipher/sqlite3.h>
#include <assert.h>
sqlite3 *open_db(void)
{
sqlite3 *dbh;
sqlite3_open_v2("test.db", &dbh, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL);
sqlite3_key(dbh, "xxxx", 4);
return dbh;
}
int key_is_valid(sqlite3 *dbh, const char *key)
{
/* ??? */
return 1;
}
int main(int argc, char *argv[])
{
sqlite3 *dbh = open_db();
assert(key_is_valid(dbh, "test"));
assert(!key_is_valid(dbh, "foobar"));
return 0;
}
Ich weiß, ich Entschlüsselungsschlüssel zu sqlite3_key
für eine spätere Überprüfung bestanden speichern könnte, aber ich mag es vermeiden.
Der Grund, warum ich dies tun muss, ist, dass ich Benutzern erlauben soll, das Passwort zu ändern, und davor möchte ich, dass sie das alte bereitstellen.