Можно и не две фразы, а одну побить на две, хоть чётные/нечётные символы, хотя это и немногим хуже (длина корреляции в тексте больше двух символов). Ну или взять первую половину и вторую.
Важно чтобы XOR делать уже после сжатия, уже почти случайных битов (архивов).
Ну и если в архивах будут одинаковые пре- или пост-биты, то их или отрезать, или удлинить последовательность для сохранения нужной энтропии.
А как Вы из этой штуки сделаете пару - закрытый и соответствующий ему открытый ключ?
Ровно как и из Вашей случайной последовательности. Это просто метод однонаправленного (без возможности восстановления исходных данных) получения воспроизводимой случайной последовательности любой длины из достаточно длинного легко запоминающегося текста.
Фактически это такое хэширование (вместо например MD5 или SHA256), только произвольной длины и достаточно простое.
Если надо превратить эту штуку в полупростое число (произведение ровно из двух разных простых чисел), как обычно требуется в методах шифрования, то делим биты на чёт/нечёт, компонуем в два битовых числа и ищем следующее простое число для каждого - получаем два простых числа для перемножения. Можно навернуть проверку что числа получились не слишком "угадываемыми", это уже по желанию.