C# 利用SQLite对.DB和.logdb加密和解密和SQLite创建数据库
2016-11-09 18:14
495 查看
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 }View Code
这里为了兼顾以前没有加密的数据库文件,特意做了处理,如果数据库不存在,直接创建,加密就不存在这个问题,主要是针对已经存在的数据库有个try...catch的异常处理,个人已验证,可以直接拿去用。
相关文章推荐
- c# sqlite 数据库加密2010-05-29 10:55用了ADO.NET 2.0 SQLite Data Provider 这样可以直接利用它来创建一个加密的sqlite数据库。
- c# sqlite 数据库加密2010-05-29 10:55用了ADO.NET 2.0 SQLite Data Provider 这样可以直接利用它来创建一个加密的sqlite数据库。
- SQLite 3.7.13的加密解密(三)—— 创建加密解密函数
- c# sqlite 数据库加密
- C# 利用mysql.data 在mysql中创建数据库及数据表
- 利用SQLite在android上创建数据库
- 解决:Android使用自带sqlite开发时,apk中创建的数据库外部的进程是没有权限去读/写的,而且无法如何读取指定目录下的db文件
- asp访问c#创建的加密解密dll(封装DESCryptoServiceProvider)
- C#中利用DPAPI加密解密数据
- 直接利用Android手机破解微信加密数据库EnMicroMsg.db
- SQLite 数据库创建后,DB文件路径问题
- c# 如何利用异或运算进行简单加密解密
- Windows 8 Metro应用中使用C#连接SQLite及创建数据库,数据表的增删改查
- C# SQLite Windows Mobile 开发:创建数据库和表(转载别人)
- 直接利用Android手机破解微信加密数据库EnMicroMsg.db
- asp访问c#创建的加密解密dll(封装DESCryptoServiceProvider)
- 一种从数据库利用xml创建树型目录的方法(C#)(一)
- c# sqlite 数据库加解密
- 一种从数据库利用xml创建树型目录的方法(C#)
- 直接利用Android手机破解微信加密数据库EnMicroMsg.db