flutter如何实现AES加密

“在Flutter中如何实现AES加密?希望能提供一个完整的示例代码,包括密钥生成、加密和解密的步骤。另外,需要注意哪些安全事项?”

2 回复

使用encrypt包实现AES加密。步骤如下:

  1. 添加依赖:encrypt: ^5.0.1
  2. 导入包:import 'package:encrypt/encrypt.dart';
  3. 使用AES加密:
final key = Key.fromUtf8('32位密钥');
final iv = IV.fromUtf8('16位初始向量');
final encrypter = Encrypter(AES(key));
final encrypted = encrypter.encrypt('明文', iv: iv);
print(encrypted.base64); // 输出Base64编码的密文

更多关于flutter如何实现AES加密的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在Flutter中实现AES加密,可以使用 encrypt 包。以下是完整示例:

  1. 添加依赖pubspec.yaml 中添加:
dependencies:
  encrypt: ^5.0.1
  1. 实现代码
import 'package:encrypt/encrypt.dart';

// AES加密
String aesEncrypt(String plainText, String key) {
  final encKey = Key.fromUtf8(key.padRight(32)); // 密钥需为32字节
  final iv = IV.fromLength(16); // 初始化向量
  
  final encrypter = Encrypter(AES(encKey));
  final encrypted = encrypter.encrypt(plainText, iv: iv);
  
  return encrypted.base64;
}

// AES解密
String aesDecrypt(String encryptedText, String key) {
  final encKey = Key.fromUtf8(key.padRight(32));
  final iv = IV.fromLength(16);
  
  final encrypter = Encrypter(AES(encKey));
  final decrypted = encrypter.decrypt64(encryptedText, iv: iv);
  
  return decrypted;
}

// 使用示例
void main() {
  final key = 'my32lengthsupersecretnooneknows1'; // 32字节密钥
  final plainText = 'Hello World';
  
  final encrypted = aesEncrypt(plainText, key);
  print('加密后: $encrypted');
  
  final decrypted = aesDecrypt(encrypted, key);
  print('解密后: $decrypted');
}

重要说明:

  • 密钥长度必须为16/24/32字节(对应AES-128/192/256)
  • 建议使用安全随机数生成密钥和IV
  • 生产环境应将密钥存储在安全位置(如Keychain/Keystore)
  • 可配合Base64编码处理二进制数据

此方案支持CBC模式(默认),如需其他模式可在AES()构造函数中指定。

回到顶部