2013-12-09 1 views
0

У меня есть массив, содержащий байты секретного сообщения (Hello World, My name is David.). У меня есть другой массив, в котором есть байты секретного кода («secretCode»). Секретный код может измениться, но мне нужно прокрутить и XOR каждую букву секретного сообщения с буквой секретного кода.Дублированный массив и объединение его вместе

Пример

enter image description here

мне нужно перебрать секретного кода массива несколько раз, так что я могу XOR каждую букву секретного сообщения, как я могу это сделать?

+1

Непонятно, почему вам нужно многократно перебирать сообщение [i]^key [i]? – Vikdor

+0

@ Викдор ключ на самом деле короче, «ревень». Вот почему. –

ответ

4
String msg = ... ; 
String key = ... ; 
StringBuilder sb = new StringBuilder(msg.length()); 
for (int i = 0; i < msg.length(); i++) { 
    sb.append((char)(msg.charAt(i)^key.charAt(i % key.length()))); 
} 

i % key.length() получит символы из массива ключей, не выходя за пределы.

+0

Какую альтернативу я могу использовать для charAt()? Поскольку это массив байтов, я работаю с –

+0

@GregValantine, это просто еще один массив. Оператор XOR преобразует байты в int, вам просто нужно передать его на char. 'byte [] byteArr = ... byte byteAtIndex = byteArr [index]; char c = (char) (byteArr [0]^byteArr [1]); // пример' –

Смежные вопросы