Flutter如何实现AES解密
在Flutter中,如何使用AES算法对加密数据进行解密?我尝试了不同的库和方法,但总是遇到解密失败或数据格式不匹配的问题。希望能提供一个具体的代码示例,说明如何正确配置密钥、IV以及选择合适的加密模式(如CBC或ECB)来实现AES解密。另外,对于Base64编码的加密数据,解密前需要做哪些预处理?
2 回复
Flutter使用encrypt包实现AES解密。步骤如下:
- 导入包:
import 'package:encrypt/encrypt.dart'; - 创建密钥和IV:
final key = Key.fromBase64('your_key'); - 创建加密器:
final encrypter = Encrypter(AES(key)); - 解密数据:
final decrypted = encrypter.decrypt(Encrypted.fromBase64('encrypted_data'), iv: iv);
注意:密钥和IV需与加密时一致。
更多关于Flutter如何实现AES解密的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
在Flutter中实现AES解密可以使用encrypt包,以下是具体实现步骤:
- 添加依赖
在
pubspec.yaml中添加:
dependencies:
encrypt: ^5.0.1
- 实现AES解密
import 'package:encrypt/encrypt.dart';
String decryptAES(String encryptedText, String key, String iv) {
try {
// 创建Key和IV
final encKey = Key.fromBase64(key);
final encIv = IV.fromBase64(iv);
// 创建加密器(CBC模式,PKCS7填充)
final encrypter = Encrypter(AES(encKey, mode: AESMode.cbc));
// 解密
final decrypted = encrypter.decrypt64(encryptedText, iv: encIv);
return decrypted;
} catch (e) {
throw Exception('解密失败: $e');
}
}
// 使用示例
void main() {
final encrypted = '你的Base64加密文本';
final key = '你的Base64密钥(16/24/32字节)';
final iv = '你的Base64 IV(16字节)';
final result = decryptAES(encrypted, key, iv);
print('解密结果: $result');
}
重要参数说明:
- 密钥(Key):必须是16/24/32字节(对应AES-128/192/256)
- IV向量:必须是16字节
- 模式:常用CBC模式(需要IV),ECB模式不需要IV
- 填充:默认使用PKCS7
注意事项:
- 确保密钥和IV与加密端完全一致
- 密钥和IV建议使用Base64编码传输
- 根据加密时使用的模式(CBC/ECB/CTR等)对应设置
如果需要其他模式或填充方式,可以在AES构造函数中指定:
AES(encKey, mode: AESMode.cbc, padding: 'PKCS7')

