如何在 Flutter 中加密 SQLite 数据库?
Posted
技术标签:
【中文标题】如何在 Flutter 中加密 SQLite 数据库?【英文标题】:How to encrypt the SQLite database in Flutter? 【发布时间】:2018-10-18 08:02:20 【问题描述】:我正在通过以下代码在 Flutter 中创建一个数据库,有什么方法可以加密数据库吗?
是否有任何可用于 Flutter 的库?
initDb() async
io.Directory documentsDirectory = await getApplicationDocumentsDirectory();
String path = join(documentsDirectory.path, "test.db");
var theDb = await openDatabase(path, version: 1, onCreate: _onCreate);
return theDb;
【问题讨论】:
【参考方案1】:Pointy Castle 似乎是目前首选的加密库。
【讨论】:
我们有和 SQLCipher 完全一样的东西吗?? @RajaJawahar 是的。见pub.dartlang.org/packages/flutter_sqlcipher 仅供参考 - 自 2020 年 3 月 16 日起,Pointy Castle 将不再维护。 @eimmer PointyCastle 已移至此处:github.com/bcgit/pc-dart 使用 SQLChieper 而不是 Pointy Castle 有什么优势?【参考方案2】:当前 sqflite 使用平台提供的任何 sqlite 版本。有一个关于这里的讨论,你可以在这里关注: https://github.com/tekartik/sqflite/issues/32
我现在知道的唯一解决方案是https://github.com/QwilApp/encrypted_sqlite,它可以用作 sqflite 的替代品,正如您所说,它在本机端使用 SQLCipher
【讨论】:
嗨,@alextk 你可能想用你的图书馆更新这个答案pub.dev/packages/sembast谢谢! :) @DazChong 问题是关于加密 sqlite 数据库,sembast 是一个替代方案,但它不是没有 sql!【参考方案3】:我今天也在找这样的图书馆。
最后我在 pub.dev 中找到了flutter_sqlcipher,确实解决了我的问题。
这里是它的描述。
这是一个 Flutter 插件,它捆绑和包装了 SQLCipher for android,它是 SQLite 的开源扩展,提供透明的 256 位 AES 数据库文件加密。
希望对你有帮助。
【讨论】:
警告:目前仅适用于 Android。 (ios 支持计划中。) Source以上是关于如何在 Flutter 中加密 SQLite 数据库?的主要内容,如果未能解决你的问题,请参考以下文章
如何在flutter的sqlite数据库中保存嵌套的复杂JSON数据
如何在 Flutter 中使用预填充的 sqlite 数据库我的应用程序