DotNet5 sqlcipher 加密解密

sqlcipher 3.x

可使用 SQLiteStudio 打开

密码需要在每次执行前使用  

command.CommandText = "PRAGMA key=*******";
command.ExecuteNonQuery();

//类库需要 一下两个, 版本号要一致

Microsoft.Data.Sqlite   2.2.4

SQLitePCLRaw.bundle_sqlcipher  1.1.14

  public List<Dictionary<string, object>> GetList(string sql, Dictionary<string, object> parameters)
        {
            using var connection = new SqliteConnection(ConnectionString);
            connection.Open();
            var command = connection.CreateCommand();
            command.CommandText = "PRAGMA key=****";
            command.ExecuteNonQuery();
            command.CommandText = sql;
            if (parameters != null)
                foreach (var p in parameters)
                {
                    command.Parameters.AddWithValue("$" + p.Key, p.Value);

                }
            using var reader = command.ExecuteReader();
            var list = new List<Dictionary<string, object>>();
            while (reader.Read())
            {
                var item = new Dictionary<string, object>();
                for (int i = 0; i < reader.FieldCount; i++)
                {

                    item.Add(reader.GetName(i), reader.GetValue(i));
                }
                list.Add(item);
            }
           
            return list;
        }

sqlcipher 4.x


 使用  DB Browser for SQLite 工具打开 ,SQLiteStudio 无法打开,

密码可以通过 连接字符串传递

首次连接带密码创建数据库,需同时建表,密码才能生效

  string dbName = Path.Combine(Environment.CurrentDirectory, "SampleDB.db");
            string connStr = new SqliteConnectionStringBuilder()
            {
                DataSource = dbName,
                Mode = SqliteOpenMode.ReadWriteCreate,
                Password = "admin"
            }.ToString();

            var db = new SqlSugarClient(new ConnectionConfig()
            {
                ConfigId = 1,
                DbType = DbType.Sqlite,
                ConnectionString = connStr,
                InitKeyType = InitKeyType.Attribute,
                IsAutoCloseConnection = true,

            });
            
            using (var connection = new SqliteConnection(connStr))
            {
                connection.Open();
                var com = connection.CreateCommand();
                com.CommandText = @"CREATE TABLE Users (
    ID INTEGER PRIMARY KEY AUTOINCREMENT,
    UserName TEXT(16),
    CreateTime TEXT NOT NULL
);";
                com.ExecuteNonQuery();
            }

类库   

 Microsoft.Data.Sqlite.Core" Version="5.0.9" 
  SQLitePCLRaw.bundle_e_sqlcipher" Version="2.0.4" 
   SqlSugarCore" Version="5.0.4" 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值