EncryptedPayload class

Envelope imutável que carrega todos os dados necessários para decifrar uma mensagem — independente do algoritmo usado.

Uso normal (via CryptUtil)

Na esmagadora maioria dos casos você nunca constrói um EncryptedPayload diretamente. Os métodos de CryptUtil o criam e retornam para você:

// Cifrar
final payload = CryptUtil.encryptAesGcm(utf8.encode('segredo'));

// Decifrar — mesmo payload, qualquer algoritmo
final plain = CryptUtil.decryptAny(payload);

// Persistir
final b64 = payload.toBase64();
final restored = EncryptedPayload.fromBase64(b64);

Construção manual (interop com sistemas externos)

Use o construtor diretamente quando o ciphertext e as chaves vêm de fora da lib — por exemplo, de uma API ou de variáveis de ambiente (Flavors, .env):

// API retorna ciphertext AES-CBC em base64; key e IV vêm do Flavors
final payload = EncryptedPayload(
  algorithm:  CryptAlgorithm.aesCbc,
  ciphertext: base64.decode(responseBody),
  key:        utf8.encode(Flavors.aesKey),   // 16 ou 32 bytes
  nonce:      utf8.encode(Flavors.aesIv),    // 16 bytes — IV do CBC
  tag:        Uint8List(0),                  // CBC não produz tag
  aad:        Uint8List(0),                  // sem AAD
);

final plain = CryptUtil.decryptAesCbc(payload);

Campos e seus papéis por algoritmo

Campo ChaCha20-Poly1305 AES-GCM AES-CBC AES-CTR
ciphertext dados cifrados idem idem idem
key 32 bytes 16 ou 32 16 ou 32 16 ou 32
nonce 12 bytes 12 bytes IV 16 b ICB 16 b
tag 16 bytes (Poly) 16 bytes vazia vazia
aad opcional opcional ignorado ignorado

Serialização

toJson / fromJson — integra com qualquer camada HTTP/storage. toBase64 / fromBase64 — string única; ideal para headers ou SharedPreferences.

Todos os campos de bytes são codificados em base64-standard no JSON.

Constructors

EncryptedPayload({required Uint8List ciphertext, required Uint8List key, required Uint8List nonce, Uint8List? tag, Uint8List? aad, CryptAlgorithm algorithm = CryptAlgorithm.chacha20Poly1305})
Cria um EncryptedPayload com os campos fornecidos.
EncryptedPayload.fromBase64(String encoded)
Reconstrói um EncryptedPayload a partir de uma string produzida por toBase64.
factory
EncryptedPayload.fromJson(Map<String, dynamic> json)
Reconstrói um EncryptedPayload a partir de um Map JSON.
factory

Properties

aad Uint8List
Dados autenticados adicionais (Additional Authenticated Data).
final
algorithm CryptAlgorithm
Algoritmo utilizado na cifragem.
final
ciphertext Uint8List
Dados cifrados. Tamanho variável; múltiplo de 16 bytes no CBC.
final
hashCode int
The hash code for this object.
no setterinherited
key Uint8List
Chave simétrica usada na cifragem.
final
nonce Uint8List
Nonce, IV ou bloco de contador inicial — depende do algoritmo:
final
runtimeType Type
A representation of the runtime type of the object.
no setterinherited
tag Uint8List
Tag de autenticação (MAC).
final

Methods

noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
toBase64() String
Serializa o payload completo como uma string base64 única.
toJson() Map<String, dynamic>
Serializa para Map<String, dynamic> compatível com jsonEncode.
toString() String
A string representation of this object.
override

Operators

operator ==(Object other) bool
The equality operator.
inherited