在 Windows 上使用 SQLCipher 编译 SQLite

2024-01-01

我正在关注this http://groups.google.com/group/sqlcipher/browse_thread/thread/55c6296b56bf4533在 Windows 上使用 SQLCipher 编译 SQLite 的教程。我对编译的先决条件感到困惑。我发现我需要安装以下内容来编译它:

  1. OpenSSL
  2. MinGW
  3. 活动状态 Perl
  4. tclTk / tclsh
  5. MSYS
  6. 视觉工作室
  7. Cygwin

其中,我刚刚安装了Visual Studio 2008。我正在 Windows 7 上工作。

在 Windows 上使用 SQLCipher 编译 SQLite 的具体先决条件是什么?


从快速浏览来看,SQLCipher 似乎是作为 SQLite 源代码+修改的检查而分发的 - 这是多文件版本而不是“合并”。因此,您需要一个能够构建 SQLite 源的环境,这意味着一堆 unixy 应用程序。

就个人而言,我会在 SQLCipher 源档案和它包含的 SQLite 版本之间进行比较(根据 VERSION 文件判断,这似乎是 SQLCipher 1.8.2 的 SQLite 3.7.2) - 这应该给出哪些修改的想法,如果任何,都是对源 SQLite 文件以及特定于 SQLCipher 的列表文件进行的。

为了避免手动构建 OpenSSL 的麻烦,您可以获取预构建的版本,这可以消除 Perl 依赖项(iirc OpenSSL 可以使用 Visual C++ 构建,因此 MingW 不应成为依赖项)。

IfSQLCipher 作者并没有故意将他的特定代码部分从 SQLite 中分离出来,这很棘手(他可能会这样做,以通过销售 win32 二进制文件来赚取一些钱),您可以接受他的更改并与 SQLite 结合起来合并版本和预构建的 OpenSSL 二进制文件,这应该可以非常轻松地插入 Visual Studio 解决方案中。

当然,这意味着如果您想升级到较新版本的 SQLCipher,则必须执行提取步骤,但这可能是值得的,除非您真的想安装 cygwin 开发环境只是为了能够构建这个单一的库。

或者,您也许可以执行以下操作配置SQLCipher 在 *u*x 机器上的步骤(无论是 linux、*BSD 还是 Mac OS X shell),因为compile步骤不应该需要所有时髦的工具。

UPDATE:

我检查了 SQLite(版本 3.7.2)[http://www.sqlite.org/src/info/42537b6056] 并针对 SQLCipher 1.1.8 发行版运行了差异,这似乎是一个相当合理的提取任务修改部分:



Makefile.in - references added for the new crypto files.
tool/mksqlite3c.tcl: references added for the new crypto files.
src/pragma.c - one added block, marked /** BEGIN_CRYPTO **/
src/pager.c - one added block, marked /** BEGIN_CRYPTO **/
src/crypto.h - new file.
src/crypto.c - new file.  

另外,仅仅为了获得 AES 加密支持而依赖 OpenSSL 似乎有点过分了——基于 SQLCipher 构建新的东西来使用专用的(而且更小的)AES 包会更好。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Windows 上使用 SQLCipher 编译 SQLite 的相关文章

  • 如何对 Firebase 中托管的静态网站进行 IP 白名单? / 是否有用于 Firebase 托管的 WAF?

    我有一个在 Firebase 中托管的静态网站 我可以很好地附加一个自定义域 我想将对我的网站的访问限制在特定范围的 IP 范围内 我知道在 GCP 中 Google Cloud Armor 可以做到这一点 但 Cloud Armor 仅适
  • AES 在汇编中的实现 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 大家好 我正在尝试构建一个代码来演示
  • Heroku 上重启后 Better-SQLite3 数据库重置

    我有一个 Discord 机器人better sqlite3 https github com JoshuaWise better sqlite3硬币和 XP 数据库 直到两周前它一直工作得很好 现在 每次重新启动后 它只会恢复 XP 和硬
  • 支持 API 28(Android Pie) 上的 Android StrongBox 的 Android 智能手机列表

    我需要 Android 9 中支持安全元件和 StrongBox 的 Android 手机列表 在哪里或如何找到该列表 我在 Samsung Galaxy S9 和 AVD Google Pixel XL API 28 上尝试了下面的代码
  • AES 会话密钥的 RSA 解密失败,并显示“AttributeError:‘bytes’对象没有属性‘n’”

    我正在努力在 Python 3 6 上从 PyCryptodome 实现公钥加密 当我尝试创建对称加密密钥并加密 解密变量时 一切正常 但是当我引入 RSA 和 PKCS1 OAEP 的那一刻 一切就都顺理成章了 session key加密
  • python 没有名为serial的模块

    我的 python 程序有问题 我编写了程序来将数据 温度 从 arduino 获取到我的树莓派 sqlite 数据库 但它在第 4 行 导入串行 处给了我一个错误 提示 ImportError 没有名为串行的模块 我使用 python3
  • iPhone 开发 - sqlite3_bind_int 不起作用

    我正在尝试使用以下代码在数据库中插入一些数据 void insertLocationOnDatabase LocationType aLocation sqlite3 stmt stmt int location aLocation loc
  • IOS 上图像的加密/解密

    我们正在使用加密 解密和 UIIMAGE 如果我们加密和解密 UIIMAge 而不保存到 iphone 画廊中 它工作正常 但如果我们加密 保存到画廊中 将 加密的图像 加载到应用程序中 然后解密它效果不好 我们使用这个函数来加密 解密 保
  • 如何在 SQLite 中替换字符串?

    如何更新具有以下内容的表列 var mobile 233KKFSDK3234 Documents Page jpg 并将其替换为 Documents Page jpg 在 SQLite 中 注意 所有文字 除了 Documents 是动态的
  • 客户端登录 - 如何在客户端安全地存储凭据?

    许多 API 都提供通过用户 密码组合远程访问其数据的功能 我想知道存储这些值的最佳方式是什么 高度安全的方式 即使 100 是不可能的 以便直接连接它们而无需每次都询问这些值 我推荐以下三种方法之一 使用身份验证令牌完全避免存储密码 在此
  • 什么是 API 密钥? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 如今 我几乎在每个跨服务应用程序中都看到这个词 API 密钥到底是什么以及它的用途是什么 另外 公共 API 密钥和私有 API 密钥
  • 如何实现 ALTER TABLE 的示例[重复]

    这个问题在这里已经有答案了 我已经多次问过这个问题 但尚未得到完整的答案 如何实现 ALTER TABLE 语句以向数据库添加列 有人可以给我举个例子吗 请阅读SQLite ALTER TABLE 参考 http sqlite org la
  • SQLite FTS4 使用特殊字符进行搜索

    我有一个 Android 应用程序 它使用 FTS4 虚拟表在 SQLite 数据库中搜索数据 它工作正常 但是当表中的数据包含特殊字符 如 或 时 SQLite MATCH 函数不会给出任何结果 我现在迷路了 谢谢 注意 默认的分词器真的
  • 是否可以使用流上下文在 PHP 下使用 FTPS?

    我了解到使用ftpsPHP for Windows 下的 ftp ssl connect 很困难 您被要求进入构建自己的二进制文件以包括 Open SSL 的漫长旅程 我找到了以下建议phpseclib http phpseclib sou
  • 使用 sqlite 离线存储数据的 Web 表单应用程序

    我有一个 asp net Web 表单应用程序 它在远程服务器上使用 sql server 2005 所有控件均使用 linq to sql 绑定 我正在尝试提供完整的离线功能 所以我想知道是否可以像 sql server db 一样创建一
  • 与 SQL 中的 IN 运算符相反

    我怎么能做相反的事情 换句话说 选择所有姓氏不是 Hansen 或 Pettersen 的人 WHERE lastname NOT IN Hansen Pettersen 请参阅 IN 和 NOT IN 运算符 部分SQLite 所理解的
  • 存储外部站点(不使用 OAuth)的用户凭据的智能方法是什么?

    我意识到 一般来说 您不应该直接存储用户凭据 即以纯文本形式 相反 最好存储它们的某种加密形式 但是 假设我创建了一个与其他第三方网站交互的网站 假设这个第 3 方站点提供了一个 API 需要用户的凭据 使用该站点 进行身份验证 如果我的目
  • BadPaddingException:无效的密文

    我需要一些帮助 因为这是我第一次编写加密代码 加密代码似乎工作正常 但解密会引发错误 我得到的错误是 de flexiprovider api exceptions BadPaddingException 无效的密文 in the 解密函数
  • 如何使用 FieldDefs 在运行时创建新的 SQLite 文件和表?

    我正在使用 Delphi Seattle 在全新的 SQLite 文件中创建一个全新的表 并且仅使用 FieldDefs 和非可视代码 我可以使用 ExecSQL CREATE TABLE 语法创建一个表 但不能如下所示 我得到 没有这样的
  • PHP - hash_pbkdf2 函数

    我正在尝试使用此 php 函数执行一个函数来哈希密码 http be php net manual en function hash pbkdf2 php http be php net manual en function hash pb

随机推荐

  • MySQL 查询 - 每组最近的条目

    我正在尝试选择表中每组的最新条目 假设我有一个表 blog posts 其中有一列 id 全部唯一 自动递增 post cat 可以是值 category1 或 category2 或 category3 以及一个 publish stat
  • 如何提高 ASP.NET MVC 中从 SQL Server 数据库获取数据的速度 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我是 ASP NET MVC5 的新手 我有一个模型Shipping and my dbo Shippings sql是这样的 CRE
  • 检查函数是否被调用为装饰器

    在下面的最小示例中decorate被调用两次 第一次使用 decorate 第二个通过正常函数调用decorate bar def decorate func print func name return func decorate def
  • 在 NetworkX 中合并两个加权图

    我使用 python 多重处理来创建多个不同的 NetworkX 图 然后使用下面的函数来组合这些图 然而 虽然这个函数对于小图工作得很好 但对于较大的图 它会使用大量内存 并且会挂在我的系统和内存密集型 AWS 系统上 仅使用系统中总内存
  • 交换两列 - awk、sed、python、perl

    我有一个大文件中的数据 280 列宽 700 万行长 我需要交换前两列 我想我可以使用某种 awk for 循环来执行此操作 打印 2 1 然后打印到文件末尾的范围 但我不知道如何执行范围部分 而且我无法打印 2 1 美元 3 美元 280
  • 在 API 加载之前在 Cordova 中显示 webView

    我正在使用 PhoneGap Cordova 构建适用于 iOS 和 Android 的应用程序 按照标准行为 在 JavaScript 初始化并且 Cordova API 准备就绪之前 不会显示 webView 所以直到我打电话 docu
  • jquery 添加类到这个被点击的元素

    我生成几行 tr 与任务 现在 可以通过单击某个任务将每个任务标记为完成span 我通过 ajax 请求来做到这一点 这是 HTML table tr td 1 td td span class icon complete a to hea
  • foreach 循环和 stdclass 对象

    我在这里看到了类似的问题 但我似乎无法将解决方案应用于我的问题 我有一个名为 results 的变量 它是从 API 获得的 我将更改专有名词以保护我工作的客户 stdClass Object out gt stdClass Object
  • Laravel 混合编译依赖

    我正在尝试使用vuex 模块装饰器 https github com championswimmer vuex module decoratorsLaravel Mix 项目中的库 使用 TypeScript 但我不断收到错误Uncaugh
  • 比较两个 OpenCV 图像/2D Numpy 数组

    我刚开始使用 OpenCV Python 和 Numpy 但已经成为 Java C C 程序员有一段时间了 我正在实现一个 sigma delta 背景检测器 它执行以下操作 设 i1 为第一张图像 设 i2 为第二张图像 for each
  • 将字节数组插入 List 的最简洁方法?

    在某些代码中 我正在创建一个字节列表 并希望在构建它时将一个字节数组插入到该列表中 这样做最干净的方法是什么 请参阅下面的代码 谢谢 public class ListInsert public static byte getData re
  • 安装 MvcScaffolding 包时 NuGet 执行策略错误

    我在项目中使用 Visual Web Developer Express 2010 Windows XP 和 ASP NET MVC4 RC 我安装了 NuGet v2 0 30619 9119 我现在尝试通过 NuGet 包管理器控制台安
  • 在运行脚本的页面上查找 xpath

    我正在尝试使用硒抓取网页 通过检查页面并右键单击建议的 xpath 属于不稳定类型 html body table 2 tbody tr 1 td form table tbody tr 2 所以我尝试了以下解决方案 driver webd
  • 当我们可以创建 String s = "abc" 时,需要什么 String s = new String("abc")

    据我的理解 String s new String abc 将创建两个对象 字符串常量池中的一个 如果 abc 尚未在常量池中 堆内存中的一个 尽管对于实际将创建多少对象以及在何处创建存在多种理解 无论如何 我有以下问题 为什么 Strin
  • 在 NodeJS 中从 Base64 字符串创建图像

    我正在尝试上传从画布中提取并通过 ajax 发布的图像 但在服务器端创建图像文件时遇到问题 我有以下这个答案 https stackoverflow com a 7347358 1358670 https stackoverflow com
  • 在django中使用聚合获取最小值字段名称

    我有一个模型 其中包含如下所示的一些字段 class Choclate models Model name models CharField max length 256 price models IntegerField 所以我想获取具有
  • 将日期时间指定为索引不会给出 DatetimeIndex

    我的 df 有一个名为 天 的字段 我需要从 天 和开始日期创建一个日期时间 可能很麻烦 但它有效 for t in df index df loc t date datetime date startdate datetime timed
  • NLog 不写入调试消息

    在我的代码中我有一些信息消息 例如logger Log dwewe and logger Debug ddddf 问题是即使我在 VS 中调试 调试消息也不会被写入
  • Visual Studio 2017 无法脱机安装,并显示“无法下载安装文件”

    因此 我使用以下命令在我的笔记本电脑上创建了 VS 2017 Community 的离线安装 vs community exe layout D Downloads VS Community 2017 lang en US add Micr
  • 在 Windows 上使用 SQLCipher 编译 SQLite

    我正在关注this http groups google com group sqlcipher browse thread thread 55c6296b56bf4533在 Windows 上使用 SQLCipher 编译 SQLite