jarsantos Posted November 28, 2009 at 02:12 PM Report Share #297906 Posted November 28, 2009 at 02:12 PM 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. Link to comment Share on other sites More sharing options...
Solution jarsantos Posted November 28, 2009 at 04:26 PM Author Solution Report Share #297920 Posted November 28, 2009 at 04:26 PM 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; } Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now