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);

// Para persistir ou transmitir, converta para CryptEnvelope e mantenha a
// chave fora do payload. A serialização desta classe é somente legado.
final migrated = AllCrypto.migrateLegacy(payload);

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