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
MapJSON.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 comjsonEncode. -
toString(
) → String -
A string representation of this object.
override
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited