Algoritmo biyectivo simétrico para enteros

Necesito un algoritmo que pueda hacer un mapeo uno a uno (es decir, sin colisión) de un entero con signo de 32 bits en otro entero con signo de 32 bits.

Mi verdadera preocupación es suficiente entropía para que la salida de la función parezca ser aleatoria. Básicamente, estoy buscando un cifrado similar al cifrado XOR, pero que puede generar resultados más arbitrarios. La seguridad no es mi verdadera preocupación, aunque la oscuridad sí lo es.

Editar para fines de aclaración:

El algoritmodebe ser simétrico, de modo que pueda revertir la operación sin un par de claves.El algoritmodebe Para ser biyectivo, cada número de entrada de 32 bits debe generar un número único de 32 bits.La salida de la función debe ser lo suficientemente oscura, agregar solo una a la entrada debería tener un gran efecto en la salida.

Ejemplo de resultado esperado:

F (100) = 98456
F (101) = -758
F (102) = 10875498
F (103) = 986541
F (104) = 945451245
F (105) = -488554






Al igual que MD5, cambiar una cosa puede cambiar muchas cosas.

Estoy buscando una función matemática, por lo que mapear enteros manualmente no es una solución para mí. Para aquellos que preguntan, la velocidad del algoritmo no es muy importante.