AES e Base64

Boa noite a todos.

Estou desenvolvendo um sistema que criptografa de dados usando o algoritmo AES e depois codifica para Base64, para transmissão via Internet.

O problema é que aleatoriamente o algoritmo AES gera caracteres não printáveis, no formato de um quadrado. No momento de descriptografar no destinatário, esse quadrado não é reconhecido. Assim, a mensagem recebida é totalmente diferente da enviada.

Como faço para resolver esse problema?

Abraço

Esse problema acontece com mensagems simples como “oi” e “tudo bom?” ou quando acontecem caracteres acentuados ou ‘ç’ (que normalmente envolvem charset)?

Dê mais informações :wink:

Os encodings de transmissão e recepção são os mesmos? As vezes você criptografa em Unicode e descriptografa em asc… assim também dá biziu.

a) Pode ser que você não esteja usando o “padding” correto - se você não usar o “padding” a quantidade de dados na saída pode ser um pouco maior que na entrada, ao ser decodificado.
b) Pode ser que os “encodings” estejam diferentes no remetente e no destinatário. Se for isso, force a serem iguais. Por exemplo, se você usa “new String (byte[] bytes)”, use em vez disso “new String (byte[] bytes, String encoding)” e force o nome do encoding para “UTF-8” (recomendado) ou “ISO-8859-1” (se os dois lados forem Windows em português, por exemplo).

Já tem um monte de resposta, agora só falta adivinhar a pergunta… rsrsrs