You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter AES-CFB加密与Go后端不匹配问题及代码修正咨询

问题1:如何在Flutter中实现AES加密?
  • 最便捷的方式是使用第三方库encrypt,步骤如下:
    1. 在项目的pubspec.yaml中添加依赖:
      dependencies:
        encrypt: ^5.0.1
      
    2. 基础实现示例(以通用的CFB-128模式为例):
      import 'package:encrypt/encrypt.dart';
      
      // 加密函数
      String aesEncrypt(String plainText, String key, String iv) {
        final keyObj = Key.fromUtf8(key);
        final ivObj = IV.fromUtf8(iv);
        final encrypter = Encrypter(AES(keyObj, mode: AESMode.cfb128));
        final encrypted = encrypter.encrypt(plainText, iv: ivObj);
        return encrypted.base16; // 可根据需求换成base64编码
      }
      
      // 解密函数
      String aesDecrypt(String encryptedText, String key, String iv) {
        final keyObj = Key.fromUtf8(key);
        final ivObj = IV.fromUtf8(iv);
        final encrypter = Encrypter(AES(keyObj, mode: AESMode.cfb128));
        return encrypter.decrypt16(encryptedText, iv: ivObj);
      }
      
    3. 注意事项:
      • 加密模式(如CBC、CFB)、密钥长度(128/192/256位)需和对接端完全一致
      • CBC模式需要配置补码方式(如PKCS7),CFB/CTR模式无需补码
      • IV(初始化向量)必须是16字节(AES块大小),且不能重复使用

问题2:Flutter与Go后端AES加密结果不匹配的解决方案

对比你提供的Go后端代码和Flutter代码,核心问题出在CFB模式的段大小差异:

  • Go标准库的cipher.NewCFBEncrypter默认使用CFB-128(段大小等于AES块大小,16字节/128位)
  • 你的Flutter代码用了AESMode.cfb64(段大小8字节/64位),这直接导致两端加密逻辑不兼容

只需修改Flutter代码中的加密模式,就能解决匹配问题:

修改后的Flutter代码:

static String encrypt(String data) {
  final iv = IV.fromUtf8(Env.iv);
  // 将AESMode.cfb64改为AESMode.cfb128
  final encrypter = Encrypter(AES(Key.fromUtf8(Env.secretKey), mode: AESMode.cfb128));
  return encrypter.encrypt(data, iv: iv).base16;
}

static String decrypt(String data) {
  final iv = IV.fromUtf8(Env.iv);
  // 同样修改加密模式为cfb128
  final encrypter = Encrypter(AES(Key.fromUtf8(Env.secretKey), mode: AESMode.cfb128));
  return encrypter.decrypt16(data, iv: iv);
}

额外验证点:

  • 确认Env.secretKey和Env.iv的字符串与Go端的config.CipherConfig.Key、config.CipherConfig.Iv完全一致,无空格、换行或编码差异
  • Go端加密后直接返回密文的hex编码,Flutter中用base16和decrypt16对应,这部分逻辑是正确的

内容的提问来源于stack exchange,提问作者Parama Artha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 18:35:02