Flutter AES-CBC加密解密插件flutter_aes_cbc的使用

Flutter AES-CBC加密解密插件flutter_aes_cbc的使用

AES加密插件说明

AES加密模式: CBC
填充模式: zeropadding(针对此模式开发,其他模式大家可以找的到)
秘钥: 16位字符串(不需要的可不传,根据业务情况选择)
偏移量: 16位字符串(不需要的可不传,根据业务情况选择)
输出: base64类型的字符串

使用步骤

初始化插件

首先确保在项目的 pubspec.yaml 文件中添加了依赖:

dependencies:
  flutter_aes_cbc: ^版本号

然后运行以下命令以获取依赖:

flutter pub get

示例代码

以下是完整的示例代码,展示了如何使用 flutter_aes_cbc 插件进行 AES-CBC 加密解密。

示例代码

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

import 'package:flutter/services.dart';
import 'package:flutter_aes_cbc/flutter_aes_cbc.dart';

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

class MyApp extends StatefulWidget {
  [@override](/user/override)
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  String _encryptedText = '未加密'; // 存储加密后的文本
  String _decryptedText = '未解密'; // 存储解密后的文本

  [@override](/user/override)
  void initState() {
    super.initState();
    // 初始化插件并进行加密解密操作
    initPlatformState();
  }

  // 平台消息是异步的,因此我们初始化时使用异步方法。
  Future<void> initPlatformState() async {
    try {
      // 加密操作
      String encrypted = await FlutterAesPlugin.encrypt({
        'password': 'yourPassword',
        'key': 'xxxxxxxxxxxxxxxx', // 16位秘钥
        'iv': 'xxxxxxxxxxxxxxxx'   // 16位偏移量
      });

      // 解密操作
      String decrypted = await FlutterAesPlugin.decrypt({
        'password': 'yourPassword',
        'key': 'xxxxxxxxxxxxxxxx', // 16位秘钥
        'iv': 'xxxxxxxxxxxxxxxx',  // 16位偏移量
        'data': encrypted           // 加密后的数据
      });

      // 更新UI状态
      setState(() {
        _encryptedText = encrypted; // 显示加密后的文本
        _decryptedText = decrypted; // 显示解密后的文本
      });
    } on PlatformException {
      setState(() {
        _encryptedText = '加密失败';
        _decryptedText = '解密失败';
      });
    }
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('AES-CBC 加密解密示例'),
        ),
        body: Padding(
          padding: const EdgeInsets.all(16.0),
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              Text('加密结果: $_encryptedText'),
              SizedBox(height: 20),
              Text('解密结果: $_decryptedText'),
            ],
          ),
        ),
      ),
    );
  }
}

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

1 回复

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


flutter_aes_cbc 是一个用于在 Flutter 中实现 AES-CBC 加密和解密的插件。AES-CBC(高级加密标准 - 密码分组链接模式)是一种常用的对称加密算法。以下是如何在 Flutter 项目中使用 flutter_aes_cbc 插件进行加密和解密的步骤。

1. 添加依赖

首先,在 pubspec.yaml 文件中添加 flutter_aes_cbc 插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  flutter_aes_cbc: ^1.0.0  # 请使用最新版本

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

2. 导入插件

在需要使用加密解密的 Dart 文件中导入 flutter_aes_cbc 插件:

import 'package:flutter_aes_cbc/flutter_aes_cbc.dart';

3. 加密数据

使用 encrypt 方法对数据进行加密。AES-CBC 加密需要以下参数:

  • plainText: 要加密的明文。
  • key: 加密密钥(16、24 或 32 字节)。
  • iv: 初始化向量(16 字节)。
void encryptData() async {
  String plainText = "Hello, World!";
  String key = "1234567890123456"; // 16 bytes key
  String iv = "1234567890123456";  // 16 bytes IV

  String encryptedText = await FlutterAesCbc.encrypt(plainText, key, iv);
  print("Encrypted Text: $encryptedText");
}

4. 解密数据

使用 decrypt 方法对加密的数据进行解密。AES-CBC 解密需要以下参数:

  • encryptedText: 要解密的密文。
  • key: 解密密钥(必须与加密密钥相同)。
  • iv: 初始化向量(必须与加密时的 IV 相同)。
void decryptData() async {
  String encryptedText = "U2FsdGVkX1+3e1ZQ6g7+5w=="; // 示例加密文本
  String key = "1234567890123456"; // 16 bytes key
  String iv = "1234567890123456";  // 16 bytes IV

  String decryptedText = await FlutterAesCbc.decrypt(encryptedText, key, iv);
  print("Decrypted Text: $decryptedText");
}

5. 完整示例

以下是一个完整的示例,展示如何使用 flutter_aes_cbc 插件进行加密和解密:

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

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('AES-CBC Encryption/Decryption'),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              ElevatedButton(
                onPressed: encryptData,
                child: Text('Encrypt Data'),
              ),
              SizedBox(height: 20),
              ElevatedButton(
                onPressed: decryptData,
                child: Text('Decrypt Data'),
              ),
            ],
          ),
        ),
      ),
    );
  }

  void encryptData() async {
    String plainText = "Hello, World!";
    String key = "1234567890123456"; // 16 bytes key
    String iv = "1234567890123456";  // 16 bytes IV

    String encryptedText = await FlutterAesCbc.encrypt(plainText, key, iv);
    print("Encrypted Text: $encryptedText");
  }

  void decryptData() async {
    String encryptedText = "U2FsdGVkX1+3e1ZQ6g7+5w=="; // 示例加密文本
    String key = "1234567890123456"; // 16 bytes key
    String iv = "1234567890123456";  // 16 bytes IV

    String decryptedText = await FlutterAesCbc.decrypt(encryptedText, key, iv);
    print("Decrypted Text: $decryptedText");
  }
}
回到顶部