【发布时间】:2016-06-04 22:35:11
【问题描述】:
是否可以检查给定的密钥是否是对已经打开和解锁的数据库的正确解密?
#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;
}
我知道我可以存储传递给sqlite3_key 的解密密钥以供以后验证,但我想避免它。
我需要这样做的原因是我想允许用户更改密码,并且在此之前我希望他们提供旧密码。
【问题讨论】: