Flutter保存和加密数据

你有没有想过它是如何在手机上处理数据的?让我们一起加密任何文件或模型!

我们将要做的:

首先,我们谈论使用Flutter的加密

接下来,我们将创建一个文件管理器来保存数据。

稍后做加密和解密pdf文件

最后,使用您自己的模型保存加密的pdf。

完成此操作后,您可以高枕无忧了。这些步骤足以处理私有数据。如果您想要更强大的加密,您必须要有一个带有后端服务的服务器端解决方案。

加密架构

图略

这是一个很简单的场景,因为在使用加密将此数据保存在电话目录中后,只需在云服务中获取数据。这里重要的一点是不应该使用任何第三方方法读取数据。

编程
我正在为此示例创建此服务。此服务返回带有此模型详细信息的 pdf URL,因此请提前保留缓存数据和 pdf。而手机上的数据缓存另外应该对数据中的操作进行加密。

首先,我为后端操作创建了一个缓存服务。

这一层还做了额外的工作,您需要为每个请求创建网络管理器实例。你应该看看这个核心类。

我准备了一个主视图屏幕来显示服务数据。

现在,我需要使用模型详细信息缓存此 pdf。 也许您只能使用 pdf 文件加密,但对于您的业务来说还不够,因为在视图中显示每个缓存文件后应该像库视图一样。

在这种情况下,我将 pdf 保存在模型 json 中。我可以直接显示所有项目模型。

缓存操作
首先,开始轻松地编写单元测试。我使用可测试的代码创建了一个模拟文件管理器。

在我使用这个模拟文件实例并调用我的自定义场景之后。现在用提供程序包打开文件目录,然后它可以在手机目录中写入任何文件。

这些代码适用于下载任何 pdf 文件并缓存在本地路径上。它将保存在您的 vscode 文件夹中。

我们知道如何缓存pdf文件,然后如果我们想缓存任何动态模型,我们将制作一个JSON字符串来添加缓存。 缓存模型操作与 pdf 过程类似,但代码略有不同。 这种不同使写入字节八位组更改为写入字符串的方法。

test('Cache Model In File', () async {

    final model = ItemModel(id: 1345);

    final directory = await getApplicationDocumentsDirectory();

    await Directory('${directory.path}').create();

    await Directory('${directory.path}/vb2').create();

    final path = '${directory.path}/vb2/${model.title}.jso';

    final file = File(path);

    final fileWithData = await file.writeAsString(model.toString());

    expect(await fileWithData.exists(), true);

  });

它已经可以在任何情况下使用。 只需要字符串源附加Key & IV 参数。 任何类都可以调用此管理器为加密自己的业务。 是时候回到测试文件夹并获取显示加密代码了。当不查看加密代码时,它需要创建一个key和 iv 字符串。

页面设计
加密和缓存
高级详细信息视图和库
源代码

详情参阅 - 亚图跨际

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值