问题描述
https://play.google.com/store/apps/details?id=com.enchantedcloud.photovault
但我不知道如何保证数据的安全
我使用了 aes_crpyt 包 ( https://pub.dev/packages/aes_crypt ),它允许我加密和解密文件 但是如何检索要在应用程序中显示的数据而不被解密为可以使用任何可以访问根文件的资源管理器打开的普通文件
解决方法
您可以查看此包:flutter_secure_storage。来自文档:
- 钥匙串用于 iOS
- AES 加密用于 Android。 AES 密钥使用 RSA 加密,RSA 密钥存储在 KeyStore 中
通过这种方式,您的数据可以通过加密以SharedPreferences
的方式以更安全的方式保存。
示例语法:
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
// Create storage
final storage = new FlutterSecureStorage();
// Read value
String value = await storage.read(key: key);
// Read all values
Map<String,String> allValues = await storage.readAll();
// Delete value
await storage.delete(key: key);
// Delete all
await storage.deleteAll();
// Write value
await storage.write(key: key,value: value);
因为任何数据库的目的都是只存储纯粹的信息组织数据。它不适合存储媒体、文档或图像等大文件。有两种选择:
- 将加密文件上传到 Firebase,然后将加密路径保存到 DB
- 将加密文件保存到本地存储,然后存储加密路径
我推荐第一种方法,因为您可以避免将加密文件保存在本地并冒着将其暴露给其他用户的风险。