flutter如何实现crypto aes解密

在Flutter中如何使用Crypto库实现AES解密?我尝试了以下代码但总是报错,希望能提供一个完整的示例,包括密钥和IV的处理方式。具体需求:支持CBC模式、PKCS7填充,并能正确解密由其他平台加密的数据。

2 回复

使用encrypt包实现AES解密:

  1. 导入包:import 'package:encrypt/encrypt.dart';
  2. 创建解密器:final encrypter = Encrypter(AES(key));
  3. 执行解密:final decrypted = encrypter.decrypt(Encrypted.fromBase64(encryptedText), iv: iv);

注意:需确保密钥和IV与加密时一致。

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


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

  1. 添加依赖
dependencies:
  encrypt: ^5.0.1
  1. AES解密代码
import 'package:encrypt/encrypt.dart';

String decryptAES(String encryptedText, String key, String iv) {
  try {
    // 创建加密器
    final encrypter = Encrypter(AES(
      Key.fromBase64(key), // 密钥(Base64格式)
      mode: AESMode.cbc,   // 模式(CBC/ECB等)
    ));
    
    // 创建IV
    final ivObj = IV.fromBase64(iv);
    
    // 执行解密
    final decrypted = encrypter.decrypt64(encryptedText, iv: ivObj);
    
    return decrypted;
  } catch (e) {
    throw Exception('解密失败: $e');
  }
}

// 使用示例
void main() {
  String encryptedData = '你的加密数据';
  String key = '你的Base64密钥';
  String iv = '你的Base64 IV';
  
  String result = decryptAES(encryptedData, key, iv);
  print('解密结果: $result');
}

重要参数说明:

  • 密钥(Key):必须是16/24/32字节(对应128/192/256位)
  • IV:16字节(CBC模式必需)
  • 模式:常用CBC或ECB
  • 填充:默认PKCS7

注意事项:

  1. 确保密钥/IV与加密端完全一致
  2. 如果数据来自其他平台,需要确认加密参数匹配
  3. 错误处理很重要,建议用try-catch包装

如果需要处理其他格式(如十六进制),可使用encrypt16encrypt方法。

回到顶部