C# 判断 SQLite 数据库文件是否加密密码保护

3

是的,我知道可以尝试连接到SQLite数据库,然后使用try-catch来判断是否需要密码。但这不是清晰的代码。我正在寻找更聪明的方法,在尝试连接之前确定一个.sqlite文件是否已加密。对于这个项目,我正在使用System.Data.sqlite dll。


我认为这篇帖子可能对你有所帮助:https://stackoverflow.com/questions/17344345/how-to-know-a-sqlite-database-is-encrypted-or-not - undefined
2个回答

0

您需要检查SQLite主数据库文件本身。

The SQLite Database File Format的摘录:

1.2.4 每页保留字节

SQLite有能力为扩展设置一些额外的小字节数。例如,这些额外的字节被SQLite加密扩展用于存储与每个页面相关的nonce和/或加密校验和。


你能给一个例子吗? - voice
我没有任何例子,因为在我的日常工作中我不使用SQLite,尤其是带有加密功能的。我只是根据我找到的文档提出了一个解决方案。 - Black Frog

0
你唯一的选择是使用 try-catch。由于整个数据库文件都被加密,包括元数据,因此没有特定的位可以进行测试。但我认为,在处理密码错误或丢失时,try-catch是合适的。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接