flutter中使用sqlite数据库如何进行加密连接?(设置密码进行连接登录验证)

908 阅读2分钟

   在flutter的运行项目中,有些情况是需要运行本地数据库进行接口请求的,需要修改与添加字段和数据时通过正常的db文件嵌入可能会被恶意修改,此时就需要将数据库进行密码认证才可以打开和修改数据库信息。那如何能将数据库进行加密并且在项目中如何才能解密呢?

    本人在项目开发中使用的是sqlite数据库,为什么使用sqlite数据库呢?具体有以下优点:

  1. 轻量级:SQLite是一个轻量级的数据库管理系统,它的代码库很小,资源消耗少,适合于嵌入式设备和较小规模的应用程序。

  2. 零配置:SQLite不需要额外的配置,不需要独立的服务器进程或管理,数据库文件即是数据库,整体非常简单。

  3. 单一文件:SQLite将整个数据库存储在一个单一的文件中,简化了管理和备份的过程。

  4. 高可靠性:SQLite采用了事务控制和ACID特性,确保了数据的完整性和一致性。

  5. 跨平台:SQLite支持多种操作系统,包括Windows、Linux、macOS和各种移动设备的操作系统。

主要是轻量!小巧!话不多说直接演示加密的方式和项目中如何解密!

正常数据库加密时会有如下加密类型:

我们可以看到Cipher的加密类型有很多种,而此时我们要去查看flutter中哪些插件能进行解密这些类型,本文主要介绍sqflite_sqlcipher插件,具体链接pub-web.flutter-io.cn/packages/sq…,原因如下,此插件在sqflite插件的基础上仅仅添加了password参数,其余都和sqflite插件使用的一样,因此在之前使用sqflite插件的时候,此时替换影响最小。

此插件仅能支持SQLCipher:AES 256 Bit加密方式,因此在数据库加密的时候选择此选项,进行加密即可。

使用时也比较简单,下载sqflite_sqlcipher插件,在连接数据库的地方进行使用此插件,并配置密码,如图所示:

此时将项目重新启动就可以看到密码的认证结果了,如果密码错误将会显示数据库初始化失败的报错:

密码设置正确即可正常连接数据库。

之前问过这个插件的github博主,他说目前只能支持SQLCipher:AES 256 Bit加密方式所以如果有其他加密方式的,此插件不推荐。

以上是自己的总结,如有不足,请指正,谢谢。