C# 判断 SQLite 数据库文件是不是经过密码加密

Posted

技术标签:

【中文标题】C# 判断 SQLite 数据库文件是不是经过密码加密【英文标题】:C# Determine if a SQLite database file is password encryptedC# 判断 SQLite 数据库文件是否经过密码加密 【发布时间】:2016-04-15 05:20:58 【问题描述】:

是的,我知道可以尝试连接到 SQLite 数据库,然后在需要密码时使用 try-catch。这不是干净的代码。我正在寻找一种更智能的方法来确定 .sqlite 文件在尝试连接之前是否已加密。我正在为这个项目使用 System.Data.sqlite dll。

【问题讨论】:

【参考方案1】:

您必须检查 SQLite 主数据库文件本身。

摘自The SQLite Database File Format:

1.2.4 每页保留字节数

SQLite 能够在 每个页面的末尾供扩展使用。这些额外的字节是 例如,由 SQLite 加密扩展用于存储随机数 和/或与每个页面关联的加密校验和。

【讨论】:

你能举个例子吗? 我没有任何示例,因为我在日常工作中不使用 SQLite,尤其是在加密方面。我只是根据我找到的文档提出了一个解决方案。【参考方案2】:

你唯一的选择是try-catch。由于the entire database file is encrypted,包括元数据,没有可以测试的特定位。但我相信在处理不正确或丢失的密码时,try-catch 是合适的。

【讨论】:

以上是关于C# 判断 SQLite 数据库文件是不是经过密码加密的主要内容,如果未能解决你的问题,请参考以下文章

C#做winform时,登录系统后怎么写判断一个子窗体的文本框中输入的密码是不是与当前登录的密码一致?

C#操作Sqlite快速入门及相关工具收集

C#访问加密的SQLite数据库

数据类型/存储类在 SQLite 中是不是重要?

C#如何用exists判断指定路径的文件是不是存在。求完整代码?

C#系 SQLite4Unity的介绍