FLUTTER /encrypt 在加密没有填充的 16o 字符串时得到 32o 字符串

FLUTTER /encrypt getting 32o string when encrypting 16o String with NO PADDING

我的 AES128-cbc 有问题,没有填充,当我给它一个 16o 的字符串时,它给我一个 32o 的字符串(我没有填充)

你能帮我理解这是怎么回事吗? 非常感谢^^

PS:我使用加密库:https://pub.dev/packages/encrypt

这是我的加密器的一部分class

class AESEncryptor{
      var iv;
      var encrypter;
      var key;
    
      AESEncryptor(){
        this.key = Key.fromSecureRandom(16);
        this.iv = IV.fromLength(16);
        this.encrypter = Encrypter(AES(key, mode: AESMode.cbc, padding: null));
      }
    
      void setIV(iv){
        this.iv=iv;
      }
    
      IV getIv(){
        return(this.iv);
      }
    
      void setKey(key){
        this.key=key;
      }
    
      Key getKey(){
        return(this.key);
      }
    
      dynamic encrypt(data){ 
        if (data.runtimeType==Key){
          data=data.base16;
    
        }
        return encrypter.encrypt(data, iv: this.iv);
      }
    }

多亏了 Topaco,我找到了纠正它的方法

新密码

 dynamic encrypt(data){ 
    if (data.runtimeType==Key){
      data=toInt(combineByTwo(data.base16.split('')));
    }
    return encrypter.encryptBytes(data, iv: this.iv);
  }

我使用的两个(暂时不完整的)函数:

List<int> toInt(chaine){
  List<int> tab=[];
  for (var i=0;i<chaine.length;i++){
    tab.add(int.parse(chaine[i],radix:16));
  }
  return tab;
}

List combineByTwo(list){ 
  List tab=[];
  for (var i=0;i<list.length;i+=2){
    tab.add(list[i]+list[i+1]);
  }
  return tab;
}