【数据库】SQLITE3 加密4

sqlite3_open 成功了,紧接着写下面的代码:
复制内容到剪贴板
代码:
   int i;

//添加、使用密码   

   i =   sqlite3_key( db, "dcg", 3 );

   //修改密码

   i =   sqlite3_rekey( db, "dcg", 0 );

用 sqlite3_key 函数来提交密码, K% Y, ^9 x* W& F1 l/ }% V

: g, q! C( Z+ h( k5 }# j& I第1个参数是 sqlite3 * 类型变量,代表着用 sqlite3_open 打开的数据库(或新建数据库)。
8 k+ p& @& R1 _( j# v+ p
3 c9 [* R' n/ N, f第2个参数是密钥。5 v0 Y. O& V& T3 y3 f; O; E8 R

- A9 V. h5 @/ w第3个参数是密钥长度。$ t0 h1 S( v' V% y7 n, ~/ h# ~( E

( j/ [- n4 y' u2 G! ]8 u% j4 d/ {用 sqlite3_rekey 来修改密码。参数含义同 sqlite3_key。
; {/ O; I. s; ~# p0 A4 J
( ]0 A& W/ R% n6 W 0 ?/ i* d( Y- t9 b/ Z+ \. N
# A   D1 j2 s4 U4 P
实际上,你可以在sqlite3_open函数之后,到 sqlite3_close 函数之前任意位置调用 sqlite3_key 来设置密码。
4 `6 |; V: P9 s' S
3 H   c% J: s! ?0 S( K   H- ]但是如果你没有设置密码,而数据库之前是有密码的,那么你做任何操作都会得到一个返回值:SQLITE_NOTADB,并且得到错误提示:“file is encrypted or is not a database”。
# i   ~# C% M9 @2 w( O" A, M' ~2 u$ H/ F% ]
只有当你用 sqlite3_key 设置了正确的密码,数据库才会正常工作。
) L' {" p' a* h/ d% ^* F! f$ g
* {" m) {& ]; y' o如果你要修改密码,前提是你必须先 sqlite3_open 打开数据库成功,然后 sqlite3_key 设置密钥成功,之后才能用 sqlite3_rekey 来修改密码。
# H, u4 C) J- T% t
: d( l3 I. [. Y如果数据库有密码,但你没有用 sqlite3_key 设置密码,那么当你尝试用 sqlite3_rekey 来修改密码时会得到 SQLITE_NOTADB 返回值。
. n: V' ^, J% }4 M) L) m4 I
6 L' E1 i7 K* p. [9 n. J如果你需要清空密码,可以使用:
复制内容到剪贴板
代码:
//修改密码

   i =   sqlite3_rekey( db, NULL, 0 );
来完成密码清空功能。
posted @ 2009-05-16 13:54  jcss  阅读(835)  评论(0编辑  收藏  举报