encrypt method
Cifra plaintext com PKCS#7 e retorna EncryptedPayload.
O campo tag do payload é vazio — CBC não produz MAC.
Implementation
EncryptedPayload encrypt(List<int> plaintext) {
_validate();
final ek = aesExpandKey(key);
final padded = _pkcs7Pad(plaintext);
final ct = Uint8List(padded.length);
Uint8List prev = iv;
for (int i = 0; i < padded.length; i += 16) {
// XOR bloco de plaintext com bloco anterior (ou IV)
final block = Uint8List(16);
for (int j = 0; j < 16; j++) {
block[j] = padded[i + j] ^ prev[j];
}
final enc = aesEncryptBlock(block, ek);
ct.setRange(i, i + 16, enc);
prev = enc;
}
return EncryptedPayload(
algorithm: CryptAlgorithm.aesCbc,
ciphertext: ct,
key: key,
nonce: iv,
// tag e aad omitidos → Uint8List(0) por padrão
);
}