Как насчет просто
public static class Array {
public static <T> T[] concat(T[]... arrays) {
ArrayList<T> al = new ArrayList<T>();
for (T[] one : arrays)
Collections.addAll(al, one);
return (T[]) al.toArray(arrays[0].clone());
}
}
И просто сделать Array.concat(arr1, arr2)
. Поскольку arr1
и arr2
относятся к одному типу, это даст вам другой массив того же типа, содержащий оба массива.
Для генерации пары ключей требуется надежный генератор случайных чисел (я не думаю, что у вас есть такой в JavaScript) и довольно много вычислений (для проверки простоты). Затем, когда у вас есть пара, когда вы передаете свой открытый ключ на другую сторону, появляется возможность атаки «злоумышленник в середине», поскольку при передаче открытого ключа нет проверки целостности.
Вы получите безопасную передачу тому, у кого есть закрытый ключ. Из вашего вопроса неясно, является ли это клиентом или сервером. Вы можете инициализировать общий секрет, если тот, у кого есть только открытый ключ, сгенерирует общий секрет, зашифрует его и отправит тому, у кого есть открытый ключ.
Вы можете получить аналогичный набор функций (зависимость от генератора случайных чисел, уязвимость к MITM, возможность создавать общий секрет для использования в качестве сеансового ключа), но с гораздо меньшими вычислениями, выполняя обмен ключами Диффи-Хеллмана.
Вам, вероятно, лучше выяснить, как настроить SSL на вашем сервере.