Математически это почти та же проблема, что и криптография.
Вы: Я хочу перейти от идентификатора (строка битов) к другому числу (строка битов) и обратно обратно неочевидным способом.Криптография: я хочу перейти от простого текста (строки битов) к другой строке битов и обратно (обратимо) неочевидным способом.
Итак, для простого решения могу ли я предложить просто подключить что-нибудьАлгоритм шифрования наиболее удобен на вашем языке, а зашифровывать и дешифровать ваш идентификатор?
Если вы хотите быть немного умнее, вы можете сделать то, что называется "засолкой", в дополнение к криптографии.Возьмите свой идентификатор в качестве 32-битного (или любого другого) числа.Объедините его со случайным 32-битным числом.Зашифруйте результат.Чтобы развернуть, просто расшифровать и выбросить случайную часть.
Конечно, если кто-то серьезно атаковал это, это может быть уязвимо для известных атак открытого / дифференциального криптоанализа, так как у вас очень мало известного открытого текста,но похоже, что вы не пытаетесь защищаться от серьезных атак.