Flutter AES256加密解密插件aes256的使用

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

Flutter AES256加密解密插件aes256的使用

aes256 是一个用于Flutter应用中执行AES-256加密和解密操作的插件。它采用CBC模式,使用256位密钥、PKCS7填充,并且支持随机盐。

插件信息

  • 名称: aes256
  • 发布地址: pub.dev
  • 在线Demo尝试: Demo

快速开始

添加依赖

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

dependencies:
  aes256: ^1.0.0 # 确保版本号是最新的

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

加密与解密示例

下面是一个简单的Flutter应用示例,演示如何使用aes256进行文本加密和解密。

主程序入口

import 'package:aes256_demo/home/home_page.dart';
import 'package:flutter/material.dart';

void main() {
  runApp(
    MaterialApp(
      title: 'AES256 Demo',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
        useMaterial3: true,
      ),
      home: const HomePage(),
    ),
  );
}

加密解密页面实现

HomePage中,我们将展示如何加密和解密一段文本。

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

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

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

class _HomePageState extends State<HomePage> {
  String originalText = "Hello, Flutter!";
  String passphrase = "YourSecretPassphrase";
  String encryptedText = "";
  String decryptedText = "";

  void encryptText() {
    setState(() {
      encryptedText = Aes256.encrypt(text: originalText, passphrase: passphrase);
    });
  }

  void decryptText() {
    if (encryptedText.isNotEmpty) {
      setState(() {
        decryptedText = Aes256.decrypt(encrypted: encryptedText, passphrase: passphrase);
      });
    }
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text('AES256 Encryption Example')),
      body: Padding(
        padding: EdgeInsets.all(16.0),
        child: Column(
          children: [
            TextField(
              initialValue: originalText,
              onChanged: (value) => originalText = value,
              decoration: InputDecoration(labelText: 'Enter text to encrypt'),
            ),
            SizedBox(height: 20),
            ElevatedButton(onPressed: encryptText, child: Text('Encrypt')),
            SizedBox(height: 20),
            Text('Encrypted Text: $encryptedText'),
            SizedBox(height: 20),
            ElevatedButton(onPressed: decryptText, child: Text('Decrypt')),
            SizedBox(height: 20),
            Text('Decrypted Text: $decryptedText'),
          ],
        ),
      ),
    );
  }
}

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

1 回复

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


当然,以下是如何在Flutter项目中使用aes256插件进行AES-256加密和解密的示例代码。首先,你需要确保在pubspec.yaml文件中添加了对encrypt包的依赖,该包提供了AES加密功能。请注意,虽然包名可能不完全是aes256,但encrypt包是Flutter社区广泛使用的加密库。

  1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  encrypt: ^5.0.1  # 请检查最新版本号并更新

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

  1. 导入包并编写加密解密函数

在你的Dart文件中(例如main.dart),你可以按照以下方式使用AES-256进行加密和解密:

import 'package:flutter/material.dart';
import 'package:encrypt/encrypt.dart';
import 'dart:convert';

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('AES-256 Encryption/Decryption Example'),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              Text('Original Text: Hello, World!'),
              SizedBox(height: 20),
              Text('Encrypted Text: ${_encryptText('Hello, World!')}'),
              SizedBox(height: 20),
              Text('Decrypted Text: ${_decryptText(_encryptText('Hello, World!'))}'),
            ],
          ),
        ),
      ),
    );
  }

  String _encryptText(String text) {
    final key = Key.fromUtf8('your-256-bit-secret-key-here-32bytes'); // 确保密钥是32字节长
    final iv = IV.fromUtf8('your-16-byte-iv-here'); // 初始化向量,16字节长
    final encrypter = Encrypter(AES(key));

    final encrypted = encrypter.encrypt(text, iv: iv);
    return base64Encode(encrypted.bytes);
  }

  String _decryptText(String encryptedText) {
    final key = Key.fromUtf8('your-256-bit-secret-key-here-32bytes'); // 确保密钥是32字节长
    final iv = IV.fromUtf8('your-16-byte-iv-here'); // 初始化向量,16字节长
    final encrypter = Encrypter(AES(key));

    final encrypted = Encrypted.fromBase64(encryptedText);
    final decrypted = encrypter.decrypt(encrypted, iv: iv);
    return decrypted;
  }
}

注意

  • 密钥(key)必须是32字节长,对应AES-256的要求。
  • 初始化向量(IV)必须是16字节长。
  • 在实际使用中,密钥和IV应该安全存储,不要硬编码在代码中。
  • base64EncodeEncrypted.fromBase64用于将加密后的字节数据转换为Base64字符串,便于存储和传输。

这个示例展示了如何在Flutter应用中使用AES-256进行加密和解密。你可以根据需要对代码进行调整,例如将密钥和IV从安全存储中读取,或者处理不同的数据类型。

回到顶部