Прежде всего, я скорее думаю, что ваши цели слишком амбициозны: почему ограничение 6?
Во-вторых, технически вам нужна биекция из области целых чисел.
В-третьих, ваше ограничение 3 противоречит принципу Керкгофа . Вам было бы лучше с хорошо известным алгоритмом, управляемым секретным ключом, где секретный ключ трудно получить, даже если вы знаете результаты для большого набора целых чисел.
В-четвертых, что вы анонимизируете против? Если вы имеете дело с личной информацией, как вы будете защищены от статистического анализа, который показывает, что Xyzzy на самом деле является Джоном Доу, основываясь на отношениях с другими данными? Есть некоторые исследования по противодействию таким векторам атаки (например, Google k-anonymization ').
В-пятых, используйте существующие криптографические примитивы, а не пытайтесь изобретать свои собственные. Существуют алгоритмы шифрования (например, AES в режиме cipher-block-chaining ), которые хорошо протестированы - AES хорошо поддерживается всеми современными платформами, предположительно Ruby. Тем не менее, шифрование все еще не дает анонимности записей в каком-либо сильном смысле.