• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

jarsantos

Problemas no tratamento de mensagens cifradas

2 mensagens neste tópico

Boas,

estou a fazer um projecto de segurança em redes em java que envolve cifrar partes das mensagens que envio pela rede.

As minhas mensagens são constituídas da seguinte forma:

Request: num(NEW_LINE)

'Header cifrado'(NEW_LINE)

'Body cifrado'(NEW_LINE)

Quando o servidor recebe a mensagem devia ser capaz de dividir a mensagem nas 3 partes e depois tratar cada uma delas de forma isolada.

Para fazer isto converti a mensagem no formato byte array para String, usei a função de split e converti novamente cada uma das partes para byte array.

O problema está que quando tento decifrar o header e o body diz que o tamanho dos dados não é o correcto ou então BadPadding. Julgo que este problema se deve à conversão de byte array para String e depois de String para byte array.

Portanto a minha questão é a seguinte: Sabem alguma forma de separar as mensagens sem ser necessário converter de byte array para outro formato? Se não, para que formato devo converter e como devo converter?

PS: para ter a certeza que estava a cifrar e decifrar convenientemente tentei decifrar o header e o body antes de os concatenar (em formato byte array) e funcionou.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Problema resolvido. Criei uma função própria que descobre padrões no byte array.

private Vector<byte[]> splitMessage(byte[] message)
{
	byte[] tab = NEW_LINE.getBytes();
	Vector<byte[]> messageParts = new Vector<byte[]>();

	for(int i = 0, j = 0, k = -1; i < message.length; i++)
	{
		if(message[i]==tab[j])
		{
			j++;

			if(j==tab.length)
			{
				byte[] aux = new byte[i-j-k];
				System.arraycopy(message, k+1, aux, 0, i-j-k);
				messageParts.add(aux);
				j=0;
				k=i;
			}
		}
		else
		{
			j=0;
		}
	}
	return messageParts;
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora