Flutter AES ECB PKCS5 加密解密插件flutter_aes_ecb_pkcs5_fork的使用

Flutter AES ECB PKCS5 加密解密插件 flutter_aes_ecb_pkcs5_fork 的使用

Null Safety 支持

分叉包 flutter_aes_ecb_pkcs5_fork 解决了 Null Safety 支持问题。

AES 128 PKCS5 支持

该插件仅支持 AES 128 PKCS5,并提供了以下功能:

  • 生成 AES 密钥
  • 加密 AES 密钥
  • 解密 AES 密钥
  • Android 使用 Java 开发,iOS 使用 Objective-C 开发

使用方法

使用此包作为库:

  1. 添加依赖 在你的 pubspec.yaml 文件中添加以下依赖项:

    dependencies:
      flutter_aes_ecb_pkcs5_fork: ^0.1.4
    
  2. 安装依赖 你可以通过命令行安装包:

    $ flutter pub get
    

    或者,你的编辑器可能支持自动获取包。查阅你的编辑器文档了解更多信息。

  3. 导入包 在你的 Dart 代码中导入包:

    import 'package:flutter_aes_ecb_pkcs5_fork/flutter_aes_ecb_pkcs5_fork.dart';
    

AES 使用示例

import 'package:flutter_aes_ecb_pkcs5_fork/flutter_aes_ecb_pkcs5_fork.dart';

void main() async {
  var data = "{\"username\":\"helloword\"}";

  // 生成一个 16 字节的随机密钥
  var key = await FlutterAesEcbPkcs5.generateDesKey(128);

  print("生成的密钥: $key");
  
  // 加密数据
  var encryptText = await FlutterAesEcbPkcs5.encryptString(data, key);

  print("加密后的文本: $encryptText");
  
  // 解密数据
  var decryptText = await FlutterAesEcbPkcs5.decryptString(encryptText, key);

  print("解密后的文本: $decryptText");
}

运行示例结果

生成的密钥: DA8FD2693B652D587EEE51E7ADD9DBB8
加密后的文本: 851544E224F6C1C7F560AB82889DE0DF66EEB6762AB836F4EE13E31100F0EA16
解密后的文本: {"username":"helloword"}

许可证

该插件采用 MIT 许可证(详情见:http://opensource.org/licenses/MIT)。

请自由使用并贡献于该项目的发展。


完整示例 Demo

以下是完整的示例代码,展示如何在 Flutter 应用程序中使用 flutter_aes_ecb_pkcs5_fork 插件进行 AES 加密和解密。

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

import 'package:flutter_aes_ecb_pkcs5_fork/flutter_aes_ecb_pkcs5_fork.dart';

void main() => runApp(const MyApp());

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

  [@override](/user/override)
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  String _platformVersion = 'Unknown';

  [@override](/user/override)
  void initState() {
    super.initState();
    initPlatformState();
  }

  // 平台消息异步处理,初始化状态
  Future<void> initPlatformState() async {
    String pkcs5Progress;

    // 字符串格式数据
    var data = "{\"username\":\"helloword\"}";

    // 创建 16 字节随机密钥
    var key = await FlutterAesEcbPkcs5.generateDesKey(128);

    // 加密数据
    var encryptText = await FlutterAesEcbPkcs5.encryptString(data, key);

    // 解密数据
    var decryptText = await FlutterAesEcbPkcs5.decryptString(encryptText, key);

    pkcs5Progress = "data:" +
        data +
        "\n" +
        "创建密钥:" +
        key +
        "\n" +
        "加密文本:" +
        encryptText +
        "\n" +
        "解密文本:" +
        decryptText +
        "\n";

    // 如果小部件在异步平台消息处理过程中被从树中移除,则丢弃回复而不是调用
    if (!mounted) return;

    setState(() {
      _platformVersion = pkcs5Progress;
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('flutter_aes_ecb_pkcs5'),
        ),
        body: Center(
          child: Text('PKCS5 进度:\n $_platformVersion\n'),
        ),
      ),
    );
  }
}

更多关于Flutter AES ECB PKCS5 加密解密插件flutter_aes_ecb_pkcs5_fork的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

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


在Flutter中使用flutter_aes_ecb_pkcs5_fork插件进行AES ECB PKCS5加密和解密时,首先需要确保你已经将该插件添加到了你的Flutter项目中。你可以通过以下步骤来实现这一点:

  1. 添加依赖:在你的pubspec.yaml文件中添加flutter_aes_ecb_pkcs5_fork依赖。
dependencies:
  flutter:
    sdk: flutter
  flutter_aes_ecb_pkcs5_fork: ^最新版本号 # 请替换为实际可用的最新版本号
  1. 安装依赖:运行flutter pub get来安装新添加的依赖。

  2. 导入插件:在你的Dart文件中导入该插件。

import 'package:flutter_aes_ecb_pkcs5_fork/flutter_aes_ecb_pkcs5_fork.dart';

以下是一个简单的代码示例,展示了如何使用flutter_aes_ecb_pkcs5_fork插件进行AES ECB PKCS5加密和解密:

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

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

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

class _MyAppState extends State<MyApp> {
  String? encryptedText;
  String? decryptedText;
  final String key = '1234567890123456'; // 16字节的密钥
  final String plainText = 'Hello, Flutter!';

  @override
  void initState() {
    super.initState();
    // 加密
    encrypt(plainText!, key);
  }

  Future<void> encrypt(String text, String key) async {
    try {
      String encrypted = await FlutterAesEcbPkcs5Fork.encrypt(text, key);
      setState(() {
        encryptedText = encrypted;
        // 解密
        decrypt(encrypted, key);
      });
    } catch (e) {
      print('加密失败: $e');
    }
  }

  Future<void> decrypt(String encryptedText, String key) async {
    try {
      String decrypted = await FlutterAesEcbPkcs5Fork.decrypt(encryptedText, key);
      setState(() {
        decryptedText = decrypted;
      });
    } catch (e) {
      print('解密失败: $e');
    }
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('AES ECB PKCS5 加密解密示例'),
        ),
        body: Padding(
          padding: const EdgeInsets.all(16.0),
          child: Column(
            children: [
              Text('原文: $plainText'),
              if (encryptedText != null)
                Text('加密后: $encryptedText'),
              if (decryptedText != null)
                Text('解密后: $decryptedText'),
            ],
          ),
        ),
      ),
    );
  }
}

在这个示例中,我们创建了一个简单的Flutter应用,它会在初始化时自动对一段文本进行AES ECB PKCS5加密,并随后对加密后的文本进行解密。加密和解密的结果会显示在应用的界面上。

请确保在实际应用中妥善处理密钥管理,不要将密钥硬编码在客户端代码中,并考虑使用安全的密钥存储方案。同时,AES ECB模式虽然简单,但在某些情况下可能不够安全,建议根据具体需求选择合适的加密模式。

回到顶部