使用 AES256 编译 System.Data.Sqlite

2023-12-04

我正在深入研究 sqlite、system.data.sqlite 和 xerial 的 JDBC 的编译,试图让加密的 sqlite 文件在这三个文件中工作。据我了解,系统数据.sqlite使用RC4加密,SQLCipher/Rijndael/wxSqlite可以使用AES256。

使用这个库,可以轻松编译 Windows 二进制文件以进行 AES256 加密。
这个图书馆 offers Xerial 的 JDBC通过合并wxsqlite3 的改进,看起来实际上是基于上面的(Rijndael 的)库。

由于上述两个库接近一模一样,并且使用相同的加密方式,因此它们已经兼容。我有一个支持加密的 JDBC 的工作 Java 项目,并且有一个已编译的 sqlite3.dll 和 sqlite3shell.exe,它们允许我使用命令行来加密、读取、写入等数据库。该 sqlite dll 和 shell 与使用 JDBC 创建的数据库兼容。

我有点迷失的地方是系统数据.sqlite使用 AES256。我需要使用这个库,因为它使我能够使用实体框架和 LINQ。我本以为这不会是一项艰巨的任务,但在过去的几天里,我一直在这个问题上陷入困境。我有加密就绪的 sqlite3 dll,如何将其与 system.data.sqlite 合并?

非常感谢您的帮助。


如果您的目标是 .NET 标准 4.6.1+ 或 Core,您可能想尝试一下 Microsoft.Data.Sqlite。只需添加 2 个 Nuget 包即可为您提供 AES256 加密。顺便说一句,有付费选项可以让 AES256 编译 System.Data.Sqlite。其中一些已列出answer.

如果您的项目当前正在使用 System.Data.Sqlite,那么转换将涉及方法和类名称的一些搜索/替换,其中大部分是大写字母的差异。例如,“SQLiteDataReader”变为“SqliteDataReader”。

另一个区别是 Microsoft.Data.Sqlite 对于列命名非常严格。例如,如果数据库架构将该列设置为“Datelisted”,则引用名为“DateListed”的列的命令将会失败。

如果您想尝试进行过渡,请安装 2 个 nuget 软件包:

Install-Package Microsoft.Data.Sqlite.Core
Install-Package SQLitePCLRaw.bundle_sqlcipher

Setup SQLitePCL

SQLitePCL.raw.SetProvider(new SQLitePCL.SQLite3Provider_sqlcipher());
SQLitePCL.Batteries_V2.Init();
SQLitePCL.raw.FreezeProvider();

创建加密数据库

string error = string.Empty;
static SQLitePCL.sqlite3 sqlite
SQLitePCL.raw.sqlite3_open(dbPath, out sqlite);
SQLitePCL.raw.sqlite3_exec(sqlite, "PRAGMA key ='myPassword'", out error);
SQLitePCL.raw.sqlite3_close(sqlite);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 AES256 编译 System.Data.Sqlite 的相关文章

随机推荐

  • 音频文件获取左/右声道

    经过大量研究 我找不到明确的答案 我想要实现的是 取一个mp3 wav文件并将其左右声道保存为2字节 然后我可以操作每个通道 然后再次将它们添加并创建一个新的 wav 文件 最好是Java的解决方案 相关问题是分割CHANNEL IN ST
  • 在 Fabric.js 中全屏显示画布

    我希望我的画布元素始终具有相同的大小 独立于客户端的屏幕分辨率 如果用户使用浏览器进行缩放 则画布元素应始终具有相同的大小 此外 纵横比应始终相同 我想要 1920 1080 点的坐标空间 如果浏览器没有相同的比例 则画布元素的侧面可能有边
  • 如何使用 date-fns 更正时区?

    网上看这个例子 https stackblitz com edit date fns playground zeitzonen file index ts gt 控制台输出 以下情况 时间为上午 11 54 Setup const date
  • pythonic 方法在没有索引变量的情况下执行 N 次某事? [复制]

    这个问题在这里已经有答案了 我有一些代码 例如 for i in range N do something 我想做某事N次 循环内的代码不依赖于i 是否可以在不创建无用的索引变量的情况下完成这个简单的任务 或者以其他更优雅的方式完成 如何
  • 迭代 list_iterator 两次[重复]

    这个问题在这里已经有答案了 我希望迭代 list iterator 两次 当我当前尝试执行此操作时 迭代器没有任何内容可在第二次迭代 我可以重置它吗 l iter 1 2 3 4 for i in l print i for i in l
  • Xamarin Forms Shell TitleView 不使图像居中

    我有一个在 Xamarin Forms 中使用新 Shell 的应用程序 我将以下代码添加到我的页面之一 试图使用 TitleView 区域居中显示我的应用程序标题图像 仅供参考 我已经尝试过居中对齐这两个选项 但没有什么区别
  • 为什么通过括号访问Symbol.iterator?

    例如 如果我创建了一个数组 var array 1 2 3 4 返回一个迭代器我会做var iterator array Symbol iterator 我不明白为什么你通过括号访问 Symbol iterator 属性 为什么不只是arr
  • Android Studio C++ NDK 库示例

    我想下载一些使用 C 或 C 的 Android Studio NDK 项目的工作示例 它将被编译为 so 库 或我可以从中提取 so 的 APK 我已经尝试过使用 Android mk 构建 ndkbuild 以及使用 CMakeList
  • gltf 光标侦听器 A 框架中的单击事件

    我无法弄清楚为什么游标侦听器适用于除我的 gltf 模型之外的所有实体 这是我的html div div
  • 使用正则表达式拆分算术表达式

    我想拆分一个表达式 例如 1 0 8 5 5 into 1 0 8 5 5 1 0 8 5 5 这就是我现在得到的expression split g 对此有何建议 这是一个解决方案 它正确检测到 并接受空格的使用 b s b s var
  • Mysqli 回滚不起作用

    我有一个 MySQL 数据库并且正在使用mysqli 由于某种原因 我无法让交易正常进行 如果我打电话 mysqli gt rollback 它不会回滚 示例代码 mysqli gt autocommit false sql INSERT
  • Android BroadcastReceiver 安装后不工作

    问候 我正在开发一个应用程序 它有一个 BroadcastReceiver 监听 android intent action PHONE STATE 该应用程序在手机状态更改时运行 我用它在检测到来电时运行代码 这在我的大多数测试手机上运行
  • 如何在MySQL中复制一行并插入到具有自动增量字段的同一个表中?

    在 MySQL 中 我试图复制一行自动递增 column ID 1 and insert将数据作为新行放入同一个表中column ID 2 我如何在单个查询中执行此操作 Use INSERT SELECT insert into your
  • 将 EDX:EAX 中存储的 64 位数字打印到标准输出

    我有一个大的 64 位数字存储在 EDX EAX 中 分别为 21C3677C 82B40000 我正在尝试将数字以十进制形式打印到控制台 2432902008176640000 是否有系统调用可以让我完成此操作 必须有人怜悯这个人和他的同
  • 如何解决kongfirst reqtest延迟问题,如何限制某些路由的访问,如何做instrumentaion

    我有一个微服务结构 其中包含一些基于 python Django 的服务 结构如下 用户kong阿尔法kong 测试版 kong 伽玛 这是我的kong yml声明式配置 format version 2 1 transform true
  • 将按钮放置在 gridview 中的最后一列

    我有一个网格视图 我通过代码向其中添加列 Retrieve Table from database gridOffers DataSource table gridOffers DataBind The columns added by c
  • 使用 R 选择列中组内的前 N ​​个值

    我需要从 R 中的以下数据框中为每个组 年月 值选择前两个值 我已经按计数和年月对数据进行排序 如何在以下数据中实现这一目标 yearmonth name count 1 201310 Dovas 5 2 201310 Indulgd 2
  • JSF 使用 maxInactiveInterval 的问题

    各位 我发现在 web xml 中测试值为 1 分钟到期时 以下代码会在页面呈现时立即重定向到给定的 url 任何指示将不胜感激 The pageContext 仅当您在 JSP 上使用 JSF 时才可用 当您尝试重定向到 XHTML 文件
  • PdfStamper正在处理输出流吗? (iTextSharp)

    我正在使用 iTextSharp 通过 C 将页码添加到 PDF 在运行代码分析时MemoryStream因为怀疑输出被多次处理 请参阅 Visual Studio 生成的此警告 这是 API 问题吗 如果第二个参数为PdfStamper被
  • 使用 AES256 编译 System.Data.Sqlite

    我正在深入研究 sqlite system data sqlite 和 xerial 的 JDBC 的编译 试图让加密的 sqlite 文件在这三个文件中工作 据我了解 系统数据 sqlite使用RC4加密 SQLCipher Rijnda