【数据库】SQLITE3 加密4
sqlite3_open 成功了,紧接着写下面的代码:
第1个参数是 sqlite3 * 类型变量,代表着用 sqlite3_open 打开的数据库(或新建数据库)。
第2个参数是密钥。5 v0 Y. O& V& T3 y3 f; O; E8 R
第3个参数是密钥长度。$ t0 h1 S( v' V% y7 n, ~/ h# ~( E
用 sqlite3_rekey 来修改密码。参数含义同 sqlite3_key。
0 ?/ i* d( Y- t9 b/ Z+ \. N
# A D1 j2 s4 U4 P
实际上,你可以在sqlite3_open函数之后,到 sqlite3_close 函数之前任意位置调用 sqlite3_key 来设置密码。
但是如果你没有设置密码,而数据库之前是有密码的,那么你做任何操作都会得到一个返回值:SQLITE_NOTADB,并且得到错误提示:“file is encrypted or is not a database”。
' ~2 u$ H/ F% ]
只有当你用 sqlite3_key 设置了正确的密码,数据库才会正常工作。
如果你要修改密码,前提是你必须先 sqlite3_open 打开数据库成功,然后 sqlite3_key 设置密钥成功,之后才能用 sqlite3_rekey 来修改密码。
如果数据库有密码,但你没有用 sqlite3_key 设置密码,那么当你尝试用 sqlite3_rekey 来修改密码时会得到 SQLITE_NOTADB 返回值。
如果你需要清空密码,可以使用:
复制内容到剪贴板
用 sqlite3_key 函数来提交密码。, K% Y, ^9 x* W& F1 l/ }% V代码:
int i;
//添加、使用密码
i = sqlite3_key( db, "dcg", 3 );
//修改密码
i = sqlite3_rekey( db, "dcg", 0 );
第1个参数是 sqlite3 * 类型变量,代表着用 sqlite3_open 打开的数据库(或新建数据库)。
第2个参数是密钥。5 v0 Y. O& V& T3 y3 f; O; E8 R
第3个参数是密钥长度。$ t0 h1 S( v' V% y7 n, ~/ h# ~( E
用 sqlite3_rekey 来修改密码。参数含义同 sqlite3_key。
0 ?/ i* d( Y- t9 b/ Z+ \. N
# A D1 j2 s4 U4 P
实际上,你可以在sqlite3_open函数之后,到 sqlite3_close 函数之前任意位置调用 sqlite3_key 来设置密码。
但是如果你没有设置密码,而数据库之前是有密码的,那么你做任何操作都会得到一个返回值:SQLITE_NOTADB,并且得到错误提示:“file is encrypted or is not a database”。
' ~2 u$ H/ F% ]
只有当你用 sqlite3_key 设置了正确的密码,数据库才会正常工作。
如果你要修改密码,前提是你必须先 sqlite3_open 打开数据库成功,然后 sqlite3_key 设置密钥成功,之后才能用 sqlite3_rekey 来修改密码。
如果数据库有密码,但你没有用 sqlite3_key 设置密码,那么当你尝试用 sqlite3_rekey 来修改密码时会得到 SQLITE_NOTADB 返回值。
如果你需要清空密码,可以使用:
复制内容到剪贴板
来完成密码清空功能。
代码:
//修改密码
i = sqlite3_rekey( db, NULL, 0 );