C# 利用SQLite对.DB和.logdb加密和解密和SQLite创建数据库

1.最近研究了下利用SQLite为db文件简单的加密和解密

 1  private static SQLiteConnection GetConnection()
 2         {
 3             SQLiteConnection conn;
 4             string password = dataProvider.ConfigSearch(ConfigCode.SYS_File_ENCRYPTION_PASSWORD, true)[0].Value;
 5             string dbFile = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData), ConfigCode.CLIENT_DATA_PATH);
 6             string dbPath = Path.GetDirectoryName(dbFile);
 7             if (!Directory.Exists(dbPath))
 8             {
 9                 Directory.CreateDirectory(dbPath);
10             }
11             if (!File.Exists(dbFile))
12             {
13                 //数据库不存在,则创建
14                 SQLiteConnection.CreateFile(dbFile);
15                 CommonUtils.SetAccessControlList(dbFile);
16                 conn = new SQLiteConnection(string.Format("Data Source={0};Pooling=true;FailIfMissing=false", dbFile));
17                 conn.Open();
18                 conn.ChangePassword(password);
19                 if (string.IsNullOrEmpty(install_db_sql))
20                 {
21                     install_db_sql = Path.Combine(Path.GetDirectoryName(typeof(SQLiteProvider).Assembly.Location), "setup.sql");
22                 }
23
24                 foreach (string line in File.ReadAllText(install_db_sql).Split(new char[] { ‘;‘ }))
25                 {
26                     if (String.IsNullOrEmpty(line))
27                     {
28                         continue;
29                     }
30                     SQLiteCommand cmd = conn.CreateCommand();
31                     cmd.CommandText = line;
32                     cmd.CommandType = CommandType.Text;
33                     cmd.ExecuteNonQuery();
34                     cmd.Dispose();
35                 }
36             }
37             else
38             {
39                 try
40                 {
41                     conn = new SQLiteConnection(string.Format("Data Source={0};Pooling=true;FailIfMissing=false", dbFile));
42                     conn.SetPassword(password);
43                     conn.Open();
44                     conn.ChangePassword(password);
45                 }
46                 catch (Exception)
47                 {
48                     conn = new SQLiteConnection(string.Format("Data Source={0};Pooling=true;FailIfMissing=false", dbFile));
49                     conn.Open();
50                 }
51
52             }
53             return conn;
54         }

这里为了兼顾以前没有加密的数据库文件,特意做了处理,如果数据库不存在,直接创建,加密就不存在这个问题,主要是针对已经存在的数据库有个try...catch的异常处理,个人已验证,可以直接拿去用。

时间: 2024-10-20 10:40:06

C# 利用SQLite对.DB和.logdb加密和解密和SQLite创建数据库的相关文章

SQLite在Android程序中的使用方法,SQLite的增删查改方法

Sqlite: 1.一款用来实现本地数据存储的轻量级数据管理工具,是众多用来实现数据库管理的工具之一. 2.Android已经将SQLite的代码功能吸收在它的系统中,我们可以直接在Android程序中使用SQLite的语句来创建数据库,并实现数据库的增删查改 SQLite的简单使用方法: 如何获得一个数据库的class模板,并设定数据库里的数据结构: 自己新建一个类,继承SQLiteOpenHelper,并重写构造方法,oncreate(),onUpgrade() 自定义类的代码实现方法和构造

利用ASP.NET加密和解密Web.config中连接字符串

介绍 这篇文章我将介绍如何利用ASP.NET来加密和解密Web.config中连接字符串 背景描述 在以前的博客中,我写了许多关于介绍 Asp.net, Gridview, SQL Server, Ajax, JavaScript等的文章.大多数情况下,我都把数据库的连接字符串放在了web.config中.其中包含许多敏感信息,包括连接数据库的用户名密码等.然而我们在web.config和machine.config中以纯文本的方式保存密码安全吗? 如果我们的程序只是部署在内部服务器中,这应该没

利用Java自带的MD5加密java.security.MessageDigest;

MD5加密算法,即"Message-Digest Algorithm 5(信息-摘要算法)",它由MD2.MD3.MD4发展而来的一种单向函数算法(也就是HASH算法),它是国际著名的公钥加密算法标准RSA的第一设计者R.Rivest于上个世纪90年代初开发出来的.MD5的最大作用在于,将不同格式的大容量文件信息在用数字签名软件来签署私人密钥前"压缩"成一种保密的格式,关键之处在于——这种"压缩"是不可逆的. Java JDK已经自带了MD5的实

加密和解密技术基础、PKI及创建私有CA

一.数据加密和解密概述 数据加密和解密是一门历史悠久的技术,从古代就已经出现了,一直发展到当代.其中,数据加密的目的有很多,可以是为了保证本地数据存取的安全性,可以是为了保证数据流在网络传输过程中的保密性,也可以是为了验证数据的完整性,还可以通过数据加密来实现密钥的交换等. 数据加密依赖于某种加密算法和加密密钥,而数据解密则依赖于某种解密算法和解密密钥.而在当代加密解密技术中,加密密钥既可以与解密密钥相同,也可以和解密密钥不同,这取决于使用什么方法进行加解密. 二.安全的目标 就信息传输过程来说

加密、解密原理和openssl自建CA过程详解

一.加密和解密相关知识简介 1.信息安全标准 NIST(National Institute of Standards and Technology)美国国家标准与技术研究院,制定了网络信息安全与保密的三个要素: 保密性(confidentiality):信息不泄露给非授权用户.实体或过程,或供其利用的特性.(一般包括数据保密性.隐私性.) 完整性(Integrity):数据未经授权不能进行改变的特性.即信息在存储或传输过程中保持不被修改.不被破坏和丢失的特性.(一般包括数据完整性.系统完整性.

Adobe AIR中使用Flex连接Sqlite数据库(1)(创建数据库和表,以及同步和异步执行模式)

系列文章导航 Adobe AIR中使用Flex连接Sqlite数据库(1)(创建数据库和表) Adobe AIR中使用Flex连接Sqlite数据库(2)(添加,删除,修改以及语句参数) Adobe AIR中使用Flex连接Sqlite数据库(3)(查询) Adobe AIR中使用Flex连接Sqlite数据库(4)(事务) Flex,Fms3相关文章索引 Fms3和Flex打造在线多人视频会议和视频聊天(附原代码) 免费美女视频聊天,多人视频会议功能加强版本(Fms3和Flex开发(附源码))

Java DES 加密和解密源码

Java密码学结构设计遵循两个原则: 1) 算法的独立性和可靠性. 2) 实现的独立性和相互作用性. 算法的独立性是通过定义密码服务类来获得.用户只需了解密码算法的概念,而不用去关心如何实现这些概念.实现的独立性和相互作用性通过密码服务提供器来实现.密码服务提供器是实现一个或多个密码服务的一个或多个程序包.软件开发商根据一定接口,将各种算法实现后,打包成一个提供器,用户可以安装不同的提供器.安装和配置提供器,可将包含提供器的ZIP和JAR文件放在CLASSPATH下,再编辑Java安全属性文件来

利用php创建数据库练习,注册

2016年12月31,星期六 一.打开XAMPP,在htdocs下创建一个文件夹,用于php创建数据库: 二.预备创建必要的文件夹: 三.可用submit打开文件夹,在左侧查看: 四.在config文件夹下创建一个php文件,db.config.php,编写数据库链接,数据库创建,数据库选择: 四(2).打开Navicat for mysql软件,点击右侧diablo,F5刷新 创建成功可看到. 四(3).事先准备了创建数据表的数据,用Navicat for mysql软件创建了class表.g

sqlite学习笔记8:C语言中使用sqlite之创建表

前面已经说了如何打开和关闭数据库,这次要说得是如何执行SQL语句,来创建一张表. 要用的的函数: sqlite3_exec(sqlite3* db, const char *sql, sqlite_callback callback, void *data, char **errmsg) 参数: db:已经打开的数据库实例 sql:SQL语句,是一个字符串 callback:是一个回调函数 data:做为回调函数的第一个参数 errmsg:用于带回错误信息 该回调函数有两种返回值类型. 1.返回