Преобразуйте ваш int в двоичный файл, а затем base64 закодируйте его. Тогда это не будут числа, но это будет обратимый хеш.
Edit:
Насколько мне известно, ты просишь невозможного.
Вы не можете взять полностью случайные данные и каким-то образом уменьшить объем данных, необходимых для их кодирования (некоторые могут быть короче, другие могут быть длиннее), поэтому ваше требование уникальности числа невозможно, должно где-то есть данные, и как бы вы это ни делали, это не гарантирует уникальности.
Во-вторых, из-за вышеизложенного также невозможно сделать его обратимым. Таким образом, об этом не может быть и речи.
Следовательно, единственный возможный способ, который я могу видеть, - это если у вас есть перечислимый источник данных. IE. Вы знаете все значения до расчета стоимости. В этом случае вы можете просто назначить им последовательный идентификатор.