Для заданного списка строк и ключа (ключевой фразы), существует ли быстрый алгоритм для получения перестановки с использованием ключа и обратный путь с использованием ключа снова?
Это означает
list = {"abc", "def", "ghi", "jkl"})
key = "passphrase"
permute(Key, list) -> {"def","jkl", "abc", "ghi"}
(или аналогично, но не оригинал) и
resolve(Key, {"def","jkl", "abc", "ghi"}) -> list
Список не длиннее 50 записей.
Пример Java предпочтительнее.