Коллеги, операции ROTR, SHR и XOR линейны по модулю "2". Если мы проверили, что используемая их комбинация биективна, то следовательно, существует невырожденная обратная матрица 32х32, умножением на которую обращается любое полученное значение. Вычислить ее можно например в Wolfram-е
Нет, я написал несколько иное. Я попробовал построить примерно похожую на S0 функцию но в 16-битном пространстве и она оказалась обратимой (проверяется просто полным перебором). Это наталкивает на мысль, что оригинальная 32-битная S0 тоже может оказаться обратимой (биективной). Но проверить это затруднительно и как доказать - тоже пока идей у меня лично нет.
Когда значение факториала в очередном проходе цикла становится превосходящим разрядную сетку целочисленного представления (а случится это довольно быстро) начнут происходить весьа чудные вещи, зависящие в основном от реализации компилятором проверок на переполнение. А вот с вещественным представлением (точнее с представлением с плавающей запятой) такого не происходит, пока Вы не превысите максимальную экспоненту - компьютер просто начинает постепенно терять младшие разряды числа, считая их несущественными для такого большого числа, но при этом само число более ли менее приблизительно адекватно, и этого достаточно для Вашей частной задачи вычисления очередного члена ряда.
Если Вас устраивает общий подход, изложенный в статье (то есть Вы согласны с тем, что именно мы называем ключом, а что шифрограммой), то вариантов обойти Вашу локальную проблему есть сразу несколько.
1. Вы можете произвести перекодирование бинарного сообщения в перестановку. Конечно, это увеличит длину сообщения, но все его символы станут уникальными.
2. Вы можете назвать ключом не элементы одного квадрата, а ячейки, расположенные аналогично правилу "разместить 8 ладей на шахматном поле так, чтобы они не атаковали друг друга попарно". Правда, длина сообщения будет ограничена 8 символами.
Наверняка можно придумать еще и другие способы ...
Длина ключа алгоритмов обычно жестко задана. У AES это 16, 24 или 32 байта. Хеширование, о чем говорите Вы, выполняется не над ключом, а над паролем или парольной фразой, для того чтобы получить ключ требуемой длины.
Транспортное кодирование - это преобразование двоичного потока в алфавит, который "пропускают" без искажений текст-ориентированные транспортные системы, например, почта или старый HTTP. Почитайте в вики.
Вариант названия ? Ну вот например, несколько отранжированных в зависимости от того, как велик будет уклон будет в реализацию либо наоборот в теорию:
"Информационно-аналитическая система бирж заказов в области ИТ"
"Применение автоматических систем опроса и анализа однородных Интернет-сайтов на примере онлайн-бирж заказов в области ИТ"
"Применение алгоритмов машинного обучения (можно уточнить конкретно) в автоматических системах опроса и анализа однородных Интернет-сайтов"
Мне как человеку 12 лет наблюдавшему за защитами ИТ-дипломов был бы глубоко индифферентен форм-фактор. Гораздо интереснее функционал, аналитика, лежащая под ним, примененные математические методы, умение самостоятельно выбирать те или иные технические решения и их грамотная реализация.