Flutter数据加密存储插件encrypt_shared_pref的使用
Flutter数据加密存储插件encrypt_shared_pref的使用
encrypt_shared_pref
是一个简单易用且功能强大的Flutter插件,用于在Android、iOS和Web平台上加密SharedPreferences。以下是该插件的主要特性、使用步骤以及完整的示例代码。
特性
- 简单易用:提供简单的API来加密和解密SharedPreferences中的数据。
- 可选加密:通过传递一个布尔值来选择是否加密数据。
- 支持多种数据类型:支持String、int、bool、double、Map和List等常见数据类型。
- 高级加密算法:使用AES-CBC-128算法进行加密。
- 双重加密:同时加密键和值。
使用步骤
1. 添加依赖
在项目的 pubspec.yaml
文件中添加 encrypt_shared_pref
依赖:
dependencies:
encrypt_shared_pref: ^[最新版本]
2. 导入库
在需要使用的Dart文件中导入 encrypt_shared_pref
:
import 'package:encrypted_shared_pref/encrypted_shared_pref.dart';
示例代码
以下是一个完整的示例,展示了如何使用 encrypt_shared_pref
插件来加密和解密不同类型的SharedPreferences数据。
import 'package:encrypt_shared_pref/encrypt_shared_pref.dart';
import 'package:flutter/material.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Encrypted Shared Pref Demo',
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
useMaterial3: true,
),
home: SaveDataView(),
);
}
}
class SaveDataView extends StatefulWidget {
[@override](/user/override)
_SaveDataViewState createState() => _SaveDataViewState();
}
class _SaveDataViewState extends State<SaveDataView> {
final SecureStorage _secureStorage = SecureStorage();
// 保存数据
Future<void> _saveData() async {
// 保存字符串
await _secureStorage.writeString("encryptedString", "This is a secure string", isEncrypted: true);
// 保存整数
await _secureStorage.writeInt("keyInt", 42, isEncrypted: true);
// 保存布尔值
await _secureStorage.writeBool("keyBool", true, isEncrypted: true);
// 保存JSON对象
await _secureStorage.writeJson("keyMap", {"name": "John", "age": 30}, isEncrypted: true);
// 保存字符串列表
await _secureStorage.writeStringList("keyList", ["apple", "banana", "orange"], isEncrypted: true);
print("Data saved successfully!");
}
// 获取数据
Future<void> _fetchData() async {
// 获取字符串
String? encryptedString = await _secureStorage.readString("encryptedString", isEncrypted: true);
// 获取整数
int? keyInt = await _secureStorage.readInt("keyInt", isEncrypted: true);
// 获取布尔值
bool? keyBool = await _secureStorage.readBool("keyBool", isEncrypted: true);
// 获取JSON对象
Map<String, dynamic>? keyMap = await _secureStorage.readJson("keyMap", isEncrypted: true);
// 获取字符串列表
List<String>? keyList = await _secureStorage.readStringList("keyList", isEncrypted: true);
print("Fetched Data:");
print("Encrypted String: $encryptedString");
print("Key Int: $keyInt");
print("Key Bool: $keyBool");
print("Key Map: $keyMap");
print("Key List: $keyList");
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Encrypted Shared Preferences Demo'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
ElevatedButton(
onPressed: _saveData,
child: Text('Save Data'),
),
SizedBox(height: 20),
ElevatedButton(
onPressed: _fetchData,
child: Text('Fetch Data'),
),
],
),
),
);
}
}
更多关于Flutter数据加密存储插件encrypt_shared_pref的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter数据加密存储插件encrypt_shared_pref的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,encrypt_shared_pref
是一个用于 Flutter 的插件,它结合了 shared_preferences
和 encrypt
库,提供了对 SharedPreferences 数据进行加密存储的能力。以下是如何在 Flutter 项目中使用 encrypt_shared_pref
的一个简单示例。
1. 添加依赖
首先,你需要在 pubspec.yaml
文件中添加 encrypt_shared_pref
依赖:
dependencies:
flutter:
sdk: flutter
encrypt_shared_pref: ^x.y.z # 请替换为最新版本号
然后运行 flutter pub get
以获取依赖。
2. 导入库
在你的 Dart 文件中导入必要的库:
import 'package:flutter/material.dart';
import 'package:encrypt_shared_pref/encrypt_shared_pref.dart';
3. 初始化加密存储
你需要初始化 EncryptSharedPreferences
实例,并设置加密密钥。注意,密钥应该保持安全,不应硬编码在代码中(这里仅作为示例)。
void main() async {
WidgetsFlutterBinding.ensureInitialized();
// 加密密钥(在实际应用中,应从安全存储中获取)
final String encryptionKey = 'your-secure-key-here';
// 初始化 EncryptSharedPreferences
final encryptSharedPref = await EncryptSharedPreferences.getInstance(encryptionKey: encryptionKey);
runApp(MyApp(encryptSharedPref: encryptSharedPref));
}
4. 使用加密存储
以下是如何存储和读取加密数据的示例:
class MyApp extends StatelessWidget {
final EncryptSharedPreferences encryptSharedPref;
MyApp({required this.encryptSharedPref});
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Encrypt Shared Preferences Example'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
ElevatedButton(
onPressed: () async {
// 存储数据
await encryptSharedPref.setString('key', 'value');
print('Data saved');
},
child: Text('Save Data'),
),
SizedBox(height: 20),
ElevatedButton(
onPressed: () async {
// 读取数据
String? value = await encryptSharedPref.getString('key');
print('Data retrieved: $value');
},
child: Text('Retrieve Data'),
),
],
),
),
),
);
}
}
完整示例
将上述代码片段组合起来,你将得到一个完整的 Flutter 应用示例,展示如何使用 encrypt_shared_pref
插件进行数据的加密存储和读取:
import 'package:flutter/material.dart';
import 'package:encrypt_shared_pref/encrypt_shared_pref.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
// 加密密钥(在实际应用中,应从安全存储中获取)
final String encryptionKey = 'your-secure-key-here';
// 初始化 EncryptSharedPreferences
final encryptSharedPref = await EncryptSharedPreferences.getInstance(encryptionKey: encryptionKey);
runApp(MyApp(encryptSharedPref: encryptSharedPref));
}
class MyApp extends StatelessWidget {
final EncryptSharedPreferences encryptSharedPref;
MyApp({required this.encryptSharedPref});
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Encrypt Shared Preferences Example'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
ElevatedButton(
onPressed: () async {
// 存储数据
await encryptSharedPref.setString('key', 'value');
print('Data saved');
},
child: Text('Save Data'),
),
SizedBox(height: 20),
ElevatedButton(
onPressed: () async {
// 读取数据
String? value = await encryptSharedPref.getString('key');
print('Data retrieved: $value');
},
child: Text('Retrieve Data'),
),
],
),
),
),
);
}
}
这个示例展示了如何使用 encrypt_shared_pref
插件进行简单的加密存储和读取操作。在实际应用中,请确保加密密钥的安全存储和管理。