Flutter数据加密插件easy_encryption的使用

发布于 1周前 作者 itying888 来自 Flutter

Flutter数据加密插件easy_encrypt的使用

easy_encrypt

一个简单而强大的包,使得加密变得简单。你只需要一行代码来加密数据,一行代码来解密数据。

开始使用

添加依赖

dependencies:
  easy_encrypt: ^0.0.1

导入包

import 'package:easy_encrypt/easy_encryption.dart';

目的

我们看到许多使用Flutter构建的应用程序都有一些与之关联的数据库。无论是用户的私人信息还是应用内聊天功能,我们都必须通过加密来保护数据,以防止攻击者或你的应用程序开发者访问你的数据库并可能利用用户数据。这个包旨在为用户提供隐私保护,并让应用程序所有者安心。

使用方法

你可以使用encryptData函数来加密纯文本数据,使用decryptData函数来解密加密后的数据。

import 'package:easy_encrypt/easy_encryption.dart';

EasyEncryption easyEncryption = new EasyEncryption();

Future<String> encryptMyMessage(String message) async {
   
    String encryptedMessage = await easyEncryption.encryptData(data: message);

    return encryptedMessage;
}

Future<String> decryptMyMessage(String encryptedMessage) async {
    
    String originalMessage = await easyEncryption.decryptData(data: encryptedMessage);
    
    return originalMessage;
}

示例代码

example/lib/main.dart

import 'package:easy_encrypt/easy_encryption.dart';
import 'package:flutter/material.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: const MyHomePage(title: 'Easy Encrypt'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({Key? key, required this.title}) : super(key: key);

  final String title;

  [@override](/user/override)
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {

  EasyEncryption easyEncryption = EasyEncryption();

  String message = "Hello World";

  String encryptedMessage = "";

  Future<String> encryptMyMessage(String message) async {

    String encryptedMessage = await easyEncryption.encryptData(data: message);

    return encryptedMessage;
  }

  Future<String> decryptMyMessage(String encryptedMessage) async {

    String originalMessage = await easyEncryption.decryptData(data: encryptedMessage);

    return originalMessage;
  }

  [@override](/user/override)
  Widget build(BuildContext context) {

    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      extendBodyBehindAppBar: true,
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(
              'Plain Text: $message',
              style: TextStyle(fontSize: 20,),
            ),
            TextButton(
              onPressed: () async {
              String result = await encryptMyMessage(message);
              setState(() {
                encryptedMessage = result;
              });
            }, child: Text("Encrypt"),),
            Text("Encrypted Message: \n",  style: TextStyle(fontSize: 20,),),
            Text(encryptedMessage, ),
          ],
        ),
      ),
    );
  }
}

更多关于Flutter数据加密插件easy_encryption的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter数据加密插件easy_encryption的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是如何在Flutter项目中使用easy_encryption插件进行数据加密的示例代码。easy_encryption是一个用于Flutter的简单加密库,支持AES和RSA加密。

首先,你需要在pubspec.yaml文件中添加easy_encryption依赖:

dependencies:
  flutter:
    sdk: flutter
  easy_encryption: ^2.0.0  # 请检查最新版本号

然后,运行flutter pub get来安装依赖。

接下来,在你的Flutter项目中导入easy_encryption库并使用它。以下是一个简单的示例,展示如何使用AES加密和解密字符串数据。

import 'package:flutter/material.dart';
import 'package:easy_encryption/easy_encryption.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  String originalText = "Hello, Flutter!";
  String encryptedText = "";
  String decryptedText = "";

  @override
  void initState() {
    super.initState();
    // 生成一个随机的AES密钥和IV(初始化向量)
    final aesKey = EasyEncryption.generateRandomKeyForAES();
    final aesIV = EasyEncryption.generateRandomIVForAES();

    // 使用AES加密数据
    encryptedText = EasyEncryption.encrypt(
      originalText,
      key: aesKey,
      iv: aesIV,
    );

    // 使用AES解密数据
    decryptedText = EasyEncryption.decrypt(
      encryptedText,
      key: aesKey,
      iv: aesIV,
    );

    print("Original Text: $originalText");
    print("Encrypted Text: $encryptedText");
    print("Decrypted Text: $decryptedText");
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('AES Encryption Example'),
        ),
        body: Padding(
          padding: const EdgeInsets.all(16.0),
          child: Column(
            crossAxisAlignment: CrossAxisAlignment.start,
            children: [
              Text("Original Text: $originalText"),
              SizedBox(height: 16),
              Text("Encrypted Text: $encryptedText"),
              SizedBox(height: 16),
              Text("Decrypted Text: $decryptedText"),
            ],
          ),
        ),
      ),
    );
  }
}

在这个示例中,我们做了以下几件事:

  1. pubspec.yaml中添加easy_encryption依赖。
  2. 导入easy_encryption库。
  3. initState方法中,生成一个随机的AES密钥和IV。
  4. 使用AES加密原始文本。
  5. 使用AES解密加密后的文本。
  6. 打印原始文本、加密后的文本和解密后的文本。
  7. 在UI中显示这些文本。

请注意,在实际应用中,你应该安全地存储和管理你的加密密钥和IV。上面的示例仅用于演示目的,密钥和IV是在运行时生成的,并且在内存中存储,这在实际应用中是不安全的。你可能需要考虑使用更安全的密钥管理方式,比如使用Keystore(在Android上)或Keychain(在iOS上)来存储密钥。

回到顶部