要 encrypt an existing unencrypted database 或 to change the password of an encrypted database ,打开数据库,然后使用SQLiteConnection的ChangePassword()函数:
// Opens an unencrypted database
SQLiteConnection cnn = new SQLiteConnection("Data Source=c:\\test.db3");
cnn.Open();
// Encrypts the database. The connection remains valid and usable afterwards.
cnn.ChangePassword("mypassword");
// Opens an encrypted database
SQLiteConnection cnn = new SQLiteConnection("Data Source=c:\\test.db3;Password=mypassword");
cnn.Open();
// Removes the encryption on an encrypted database.
cnn.ChangePassword(null);
// Attach to a database using a different key than the main database
SQLiteConnection cnn = new SQLiteConnection("Data Source=c:\\test.db3");
cnn.Open();
cmd = new SQLiteCommand("ATTACH DATABASE 'c:\\pwd.db3' AS [Protected] KEY 'mypassword'", cnn);
cmd.ExecuteNonQuery();
使用二进制密码附加加密数据库:
// Attach to a database encrypted with a binary key
SQLiteConnection cnn = new SQLiteConnection("Data Source=c:\\test.db3");
cnn.Open();
cmd = new SQLiteCommand("ATTACH DATABASE 'c:\\pwd.db3' AS [Protected] KEY X'FFEEDD102030'", cnn);
cmd.ExecuteNonQuery();
9 回答
使用SQLCipher,它是SQLite的开源扩展,为数据库文件提供透明的256位AES加密 . http://sqlcipher.net
一个选项是VistaDB . 它们允许数据库(甚至表)受密码保护(并且可选地加密) .
我知道这是一个老问题,但简单的解决方案不是仅仅保护操作系统级别的文件吗?只是阻止用户访问该文件,然后他们就无法触摸它 . 这只是一个猜测,我不确定这是否是一个理想的解决方案 .
您可以使用sqlite .net提供程序(System.Data.SQLite)的内置加密 . 在http://web.archive.org/web/20070813071554/http://sqlite.phxsoftware.com/forums/t/130.aspx查看更多详情
要 encrypt an existing unencrypted database 或 to change the password of an encrypted database ,打开数据库,然后使用SQLiteConnection的ChangePassword()函数:
要 decrypt an existing encrypted database 使用
NULL
或""
密码调用ChangePassword()
:要打开现有加密数据库或创建新加密数据库,请在
ConnectionString
中指定密码,如上例所示,或在打开新SQLiteConnection
之前调用SetPassword()
函数 .ConnectionString
中指定的密码必须是明文,但SetPassword()
函数中提供的密码可以是二进制字节数组 .默认情况下,将另一个数据库文件附加到现有连接时,ATTACH关键字将使用与主数据库相同的加密密钥 . 若要更改此行为,请使用KEY修饰符,如下所示:
如果使用明文密码附加加密数据库:
使用二进制密码附加加密数据库:
为什么需要加密数据库?用户可以轻松地反汇编程序并找出密钥 . 如果您要对其进行网络传输加密,请考虑使用PGP而不是将加密层压缩到数据库层 .
您可以使用SEE插件加密SQLite数据库 . 这样可以防止未经授权的访问/修改 .
引用SQLite文档:
您可以在this link中找到有关此插件的更多信息 .
您可以使用密码保护SQLite3 DB . 在进行任何操作之前,首次按如下方式设置密码 .
然后下次你可以访问它
这不允许任何GUI编辑器查看您的数据 . 如果您提供密码,某些编辑者可以解密数据库 . 使用的算法是RSA .
稍后如果您想更改密码,请使用
要重置或删除密码,请使用
关于密码保护你的sqlite db的问题,我不认为可以做到 .
你可以加密它,这里有一些信息:
http://sqlcrypt.com/
每个平台149美元 .
如果使用 FluentNHibernate ,则可以使用以下配置代码:
方法UsingFileWithPassword(filename,password)加密数据库文件并设置密码 .
它仅在创建新数据库文件时运行 . 使用此方法打开时,旧的未加密失败 .