quinta-feira, 3 de outubro de 2013

CipherInputStream o retorno

Bom dia a todos,

atenção isso é um post técnico


Se vocês usam a classe CipherInputStream para fazer criptografia de dados nunca devem ter percebido uma coisa engraçada. O caso é: eu precisava limitar o tamanho de um stream que poderia ser usado em um serviço Rest e para tal eu criei um wrapper da classe InputStream e quando ele fosse ler o InputStream , sempre contasse os dados e se chegasse em tal limite , lança uma exceção. O problema é que quando eu passava esse wrapper com 1 milhão de bytes dentro do InputStream e com limite de 1 milhão de bytes para a CipherInputStream , as vezes ele passava e as vezes ele lançava exceção.

Fui descobrir que essa bendita classe ( CipherInputStream) do java não é consistente em relação ao retorno do dado criptografado o que eu acredito ser totalmente aceitável, mas isso não está documentado em lugar nenhum.

A lição é : tamanho do retorno do CipherInputStream não tem relação de 1 para 1 com o tamanho do InputStream que você coloca no construtor dele.

Até mais.