Если все, что вам нужно, это что-то действительно простое, что обычный пользователь не заметит, тогда используйте ряд операторов XOR и shift.
Проблема неиспользования массива для хранения примерно 4 миллиардов INT состоит в том, что вам нужна функция, которая выполняет случайную однозначную карту в домене с 4 миллиардами INT. Вы можете смешать несколько операторов XOR и shift для создания своих собственных, но это не составит труда взломать. Даже если бы была хорошо известная карта «один на один», она также потерпела бы неудачу. Без соли кто-то может просто сгенерировать простой радужный стол, чтобы сломать его.
Проблема с солью в двухсторонней связи заключается в том, что вы должны защищать ее. Соли должны быть секретными, и как только вы узнаете, что это такое, они становятся бессмысленными.
Если вы хотите настроить безопасный канал связи, взгляните на Протокол обмена сообщениями вне протокола версии 2 . Это даст вам пример того, насколько сложным может стать шифрование связи. Я бы посоветовал вам найти что-то хорошо известное, что кто-то другой уже создал и протестировал. Даже если вы используете что-то, что создал кто-то другой, если вы используете это неправильно, это не удастся.