Повторное использование одноразового блокнота выявляет различия открытых текстов из-за его линейности:
$$c_1 = m_1 \oplus k,~~~~ c_2 = m_2 \oplus k,~~~~ c_1 \oplus c_2 = m_1 \oplus m_2.$$
С другой стороны, хорошие блочные шифры (основанные на Feistel Networks, SPN или чем-то еще) уменьшают количество информации, напрямую утекающей из-за повторного использования ключа: если $c_1 = E_k(m_1), c_2 = E_k(m_2)$, то учитывая $c_1$ и $c_2$ мы можем только сделать вывод, является ли $m_1$ и $m_2$ равны или нет (проверив, $c_1$ и $c_2$ равны или нет).
Во-первых, этого недостаточно для современных требований к шифрованию: такое шифрование до сих пор считается небезопасным, поскольку все равно происходит утечка информации о сообщениях.
Однако, используя соответствующий режим блочного шифра (например, CBC, CTR), мы можем рандомизировать входные данные для блочного шифра, так что даже если сообщения одинаковы, входные и выходные данные для блочного шифра будут разными ( с очень большой вероятностью). Таким образом, злоумышленник не сможет сказать, были ли сообщения равны или не были просто заданы зашифрованные тексты.
УПД: чтобы довести мысль до конца, речь идет не о необратимости функции Фейстеля $F$ сам по себе: это может быть обратимо, и FN все еще будет в безопасности (возможно, с еще несколькими раундами). На самом деле, вам даже не нужно инвертировать $F$ расшифровать блок. Сложность его взлома заключается в том, что неизвестный секретный ключ используется сложным нелинейным образом, что очень затрудняет извлечение любой значимой связи между блоками открытого текста / зашифрованного текста (в отличие от многоразового блокнота, где связь является линейной и простой).