- 浏览: 869477 次
- 性别:
- 来自: 济南
-
文章分类
- 全部博客 (280)
- java相关 (29)
- linux系统 (55)
- ipsec (0)
- ssl (3)
- 信息安全 (13)
- web相关 (35)
- windows (9)
- c,c++ (14)
- log4j (3)
- hibernate (8)
- sqlite (1)
- 程序人生 (2)
- js (2)
- 生活点滴 (3)
- 网络相关 (14)
- 问题积累 (15)
- 数据库相关 (27)
- 软件测试 (2)
- PKI相关 (2)
- 程序设计 (7)
- 犄角旮旯 (0)
- 杂七杂八 (0)
- 硬件相关 (14)
- 防火墙 (2)
- 电子商务 (2)
- 多媒体相关 (1)
- 内存管理 (4)
- 面向对象 (1)
- csp (1)
- 驱动开发 (3)
- 移动开发 (2)
- openssl多线程实例 (1)
最新评论
-
xiaoyao3857:
博主很有探索精神嘛,学习了
Linux主机名Hostname详解 -
hiskyrisa:
言简意赅,好文章。
Flex是什么 -
layznet:
犯了类似错误。使用的是derby数据库。driverClass ...
java.sql.SQLException: No suitable driver -
idision:
你好,文章有一句createSubjectKeyId(keyT ...
bouncycastle 产生证书 -
zheng12tian:
代码有全的不?只贴一部分,,,,
在LOG4J中把日志写入远程数据库
SQLite
数据库加密的一种解决方案
SQLite
是一个非常小巧的跨平台嵌入式数据库,它的数据库以文件的形式存放在本地磁盘上,但是在其开源的免费版中它却缺少了一个数据库中几乎是必备的功能,那就是对于数据库的加密。
SQLite
的数据库文件可以被任何的文本编辑工具打开,从而获取到其中的数据,这一点令很多开发者感到不安。
但是其实
SQLite
是支持数据库加密的,前些天看到了网友
arris
的帖子,具体如下:
sqlite
的源代码中原本就考虑了加密的实现,并且保留了接口
sqlite3_key
和
sqlite3_rekey
,只是这两个函数在
free
版本中没有实现,但幸运的是,
sqlite
的源代码的代码是开放并允许修改,我们可以很方便的增加加密的实现。在
http://www.sqlite.com.cn/POParticle/3/216.Html
链接的的代码包中就包含有可加密
sqlite
的源代码的实现,我根据这个包编译了一个可加密的
sqlite
。这个包加密实现调用了
windows API
的加密函数,所以只能在
windows
中使用。
这个可加密的版本是在一个
ADO.NET 2.0 SQLite Data Provider
的基础上改过来的(
http://www.sqlite.com.cn/POParticle/3/216.Html
),据原作者声称效率损失在千分之一以下。原始工程是基于
VS2005
的,但是考虑到其普及性还不是很广,所以重新建立了一个居于
VC2003
的工程。
其实
SQLite
的两个加密函数使用起来非常的简单,下面分情况说明:
①
给一个未加密的数据库添加密码:如果想要添加密码,则可以在打开数据库文件之后,关闭数据库文件之前的任何时刻调用
sqlite3_key
函数即可,该函数有三个参数,其中第一个参数为数据库对象,第二个参数是要设定的密码,第三个是密码的长度。例如:
sqlite3_key(db,"1q2w3e4r",8);
//
给数据库设定密码1q2w3e4r
②
读取一个加密数据库中的数据:完成这个任务依然十分简单,你只需要在打开数据库之后,再次调用一下
sqlite3_key
函数即可,例如,但数据库密码是123456
时,你只需要在代码中加入sqlite3_key(db,"123456",6);
①
更改数据库密码:首先你需要使用当前的密码正确的打开数据库,之后你可以调用
sqlite3_rekey(db,"112233",6)
来更改数据库密码。
②
删除密码:也就是把数据库恢复到明文状态。这时你仍然只需要调用sqlite3_rekey
函数,并且把该函数的第二个参数置为NULL
或者"",
或者把第三个参数设为0
。
加密后数据库文件显示为乱码:
为此我建立了一个简单的示例:
sqlite3 *db;
sqlite3_stmt *stat;
char
*zErrMsg = 0;
char
temp[256], FileRoot[256];
char
buffer2[1024]="0";
sprintf(temp, _T("%s"), _T("utf.db"));
CCodingConv::GB2312_2_UTF8(FileRoot, 256, temp, 0);
sqlite3_open(FileRoot, &db);
if
(db == NULL)
{
return
-1;
}
sqlite3_key(db,"1q2w3e4r",8);
sqlite3_exec(db, "CREATE TABLE list (fliename varchar(128) UNIQUE, fzip text);", 0, 0, &zErrMsg);
sqlite3_prepare(db, "insert into list values ('
中文GB2312
编码',?);", -1, &stat, 0);
strcpy(temp, "
测试数据UTF-8
的支持情况");
int
len = (int
)strlen(temp);
sqlite3_bind_text(stat, 1, temp, len, NULL);
sqlite3_step(stat);
sqlite3_prepare(db, "select * from list;", -1, &stat, 0);
sqlite3_step(stat);
const
unsigned
char
* test = sqlite3_column_text(stat, 1);
int
size = sqlite3_column_bytes(stat, 1);
printf("%s", test);
sqlite3_finalize(stat);
//sqlite3_rekey(db,"",0);
sqlite3_close(db);
发表评论
-
mysql 安装注意
2010-07-12 21:07 874mysql 远程连接赋予权限: GRANT ALL PRIV ... -
Windows和Linux系统下面MySQL的大小写敏感性不同
2010-04-21 15:00 2065同样的建表脚本,在windows下所有的表名都成了小写的了,在 ... -
关闭Mysql日志功能
2009-08-04 17:47 1596Cacti服务器使用有一段时间了,发现在 /usr/loca ... -
ESQL编程使用说明
2009-07-30 20:51 2044ESQL编程使用说明 ... -
ESQL/C资料(完全版)四
2009-07-30 20:50 16955.3 嵌入SQL的处理过程 INFORMIX的预 ... -
ESQL/C资料(完全版)三
2009-07-30 20:47 2186第四节 ORACLE数据库的嵌 ... -
ESQL/C资料(完全版)二
2009-07-30 20:46 1968第三节 IBM DB2嵌入SQL语言 DB2支持SQL ... -
ESQL/C资料(完全版)一
2009-07-30 20:45 2556第六章 嵌入式SQL(E-SQL)简介 ... -
Mysql5的auto Reconnect错误
2009-07-28 09:10 4999一、解决方案一 最近 ... -
Mysql JDBC URL中几个重要参数说明
2009-07-28 08:57 2967mysql JDBC Driver 常用的有两个,一个是gj ... -
Linux平台下修正MySQL中文乱码问题
2009-07-20 16:49 1767操作系统环境: RHEL4.6 ... -
如何将syslogng的日志写入MySQL数据库
2009-07-20 11:24 3492如何将syslogng的日志写入MySQL数据库 <! ... -
shell自动连接mysql后进行查询操作的方法
2009-07-20 11:14 96461.需求,自动登录mysql(root:root,passwd ... -
用C语言操作MySQL数据库,进行连接、插入、修改、删除等操作
2009-07-20 11:07 2359很多人用到MySQL来开发一些项目,有时为了性能,我们会直接 ... -
mysql 5.X 迁移linux上,表名大小写敏感问题!
2009-07-18 17:39 2370mysql数据库,库名以目录名存在,表名以文件名(后缀为.fr ... -
mysql常用经典操作
2009-07-18 15:42 949.连接服务器 mysql -u cnscn ... -
绿色数据库
2009-07-17 23:20 1322如今,由于网络应用的飞速发展、多媒体数据的日益增长、视频音频 ... -
linux下mysql的最常用的操作指令_创建用户、备份和还原数据库
2009-07-17 08:55 27241]如何创建mysqld数据库的管理用户? 数据库安装好后, ... -
Linux操作系统下MySQL数据库的使用方法
2009-07-17 08:54 1039一、连接MYSQL: 格式: mysql -h主机 ... -
org.gjt.mm.mysql.Driver和com.mysql.jdbc.Driver的 区别
2009-07-15 11:42 2020org.gjt.mm.mysql.Driver是早期的驱动名称 ...
相关推荐
这个"Sqlite数据库加密小工具"很可能就是基于这样的扩展,用于帮助用户对SQLite数据库进行加密和解密操作。 加密过程通常包括以下步骤: 1. **安装加密库**:首先,你需要在你的开发环境中集成像SQLCipher这样的...
SQLiteCipher是一种针对SQLite数据库的加密解决方案,它提供了一种安全的方法来存储敏感数据,同时保持与标准SQLite API的兼容性。 首先,SQLiteCipher是SQLite的一个分支,它在数据库文件级别提供了AES-256加密。...
综上所述,“SQLite 数据库加解密工具 绿色版v2”为用户提供了一种便捷的方式来保护 SQLite 数据库的安全,通过加密确保数据在存储和传输过程中的隐私性。通过了解加密和解密的原理,我们可以更好地理解和利用这款...
SQLite的加密机制通常基于AES(高级加密标准),这是一种广泛认可的加密算法,提供了强大的数据安全性。 在1.0.112版本之后,从113版本开始,SQLite不再支持访问加密的SQLite数据。这可能是因为加密技术的更新或...
WinForm是.NET Framework提供的一种用于创建Windows桌面应用程序的用户界面(UI)框架。它允许开发者使用拖放工具设计UI,并通过C#代码实现业务逻辑。在本项目中,我们将创建一个简单的WinForm界面,包含输入框供...
1. SQLite数据库加密: SQLite提供了一种名为SQLite Encryption Extension (SEE) 的机制来实现数据库加密。SEE通过在SQLite内部添加一个加密层,使得数据在写入磁盘之前先进行加密,读取时再解密。这确保了即使...
1. **SQLite 数据库加密的一种解决方案从三个不同的层次实现对数据库数据的加密.docx**:这份文档可能详细阐述了一种加密方法,该方法可能涉及数据库文件、表、以及字段三个层面的加密,确保多层防护。 2. **[推荐]...
SQLCipher是一个基于SQLite的数据库加密解决方案,它通过在SQLite之上添加一层加密层,使得数据库文件在磁盘上以密文形式存储,从而确保数据在未授权的情况下无法读取。SQLCipher采用了256位AES(高级加密标准)算法...
SQLite ODBC(Open Database Connectivity)驱动程序是一种允许应用程序通过ODBC接口与SQLite数据库进行交互的工具。在IT领域,SQLite是一种轻量级、开源的嵌入式SQL数据库引擎,广泛应用于移动设备、桌面应用和...
SQLite提供了一种高效、可靠且易于集成的数据存储解决方案,尤其适用于桌面应用程序和移动设备。VB.NET是.NET框架的一部分,提供了丰富的功能来创建Windows应用程序,包括与数据库的交互。 首先,为了在VB.NET项目...
实现SQLite数据库加密的方法很多,例如SQLCipher、SQLite Encryption Extension (SEE)等。SQLCipher是一款流行的开源解决方案,它提供了一个安全的API,允许开发者在标准SQLite API之上进行加密操作。这个demo可能...
SQLCipher是一款开源的、基于SQLite3的数据库加密解决方案,它为SQLite数据库提供了透明的数据加密功能,确保在存储和处理敏感信息时提供安全保护。 首先,我们需要了解SQLite3。SQLite3是一个轻量级的、自包含的、...
总的来说,SQLCipher为sqlite数据库提供了一种简单而有效的加密解决方案,适用于那些对数据隐私和安全有较高要求的应用程序。通过合理集成和使用,开发者可以在保护数据的同时,享受到SQLite带来的便利和灵活性。
总之,SQLiteStudio v3.1.1是一个强大而全面的SQLite数据库管理解决方案,无论你是开发者、系统管理员还是数据分析人员,都能借助其功能强大的特性高效地管理和维护SQLite数据库。无论是进行日常的数据操作,还是...
SQLite Crypt 是一种专门用于加密SQLite数据库的解决方案,它提供了安全的数据存储方式,以防止未经授权的访问。SQLite Crypt的工作原理是在数据写入数据库时对其进行加密,并在读取时解密,确保即使数据库文件被...
总之,SQLCipher4为SQLite数据库提供了安全的加密解决方案,确保了数据在存储和传输过程中的安全性。它简化了开发者的工作,使他们能够在不牺牲性能的前提下,轻松地保护应用程序中的敏感数据。
总的来说,SQLite3.7.3加密静态库为需要在嵌入式或移动环境中提供安全数据存储的开发者提供了一种可靠的选择。尽管这是一个较旧的版本,但对于许多仍然使用它的项目来说,它仍然提供了一个简单且有效的加密解决方案...
SQLite数据库是一种开源、轻量级、自包含的关系型数据库管理系统,广泛应用于移动设备、嵌入式系统以及桌面应用中。它的设计目标是提供一个无需服务器进程、简单易用且高度可靠的数据库解决方案。SQLite数据库文件是...
SQLCipher是一个开源的SQLite3加密解决方案,它使用AES(高级加密标准)256位加密算法对数据库进行加密。这确保了即使数据库文件被盗或丢失,数据依然保持安全,因为没有正确的密钥,任何人都无法解密并访问其中的...