Estoy construyendo un sistema con fuente que estoy distribuyendo en la red para proporcionar mascotas virtuales adoptables. El sistema será propiedad principalmente de niños. Como quiero que pueda ser utilizado por programadores principiantes absolutos, existen varias limitaciones de complejidad en mi sistema: no puede usar bibliotecas que normalmente no incluyen PHP, y no puede tocar una base de datos ni escribir en otro almacenamiento permanente. .Encriptación simple en PHP
Cuando se adopta a cada mascota, el visitante recibirá al azar una de una serie de variaciones ligeramente diferentes de esa mascota. Al principio, las variaciones se ven iguales, pero crecen con el tiempo para convertirse en mascotas diferentes. El visitante recibirá un código corto en HTML que enlaza con la imagen de su mascota. Dado que no hay un almacenamiento permanente disponible en el lado del servidor, el enlace de la imagen del usuario debe contener toda la información para determinar qué variación de mascota terminaron obteniendo.
Por el momento, la URL solo contiene el ID de la mascota y el ID de la variación que obtuvo el usuario. El problema con esto es que, al comparar códigos entre ellos, los usuarios pueden descubrir quién entre ellos terminó con la misma variación. Dado que algunas variaciones son más raras que otras, los usuarios pueden detectar las variaciones raras fácilmente antes de que la diferencia sea incluso visualmente evidente.
Lo que me gustaría es un sistema de encriptación para los detalles en la URL. Algo que oscurece el ID de variación para que cada usuario obtenga una URL diferente con alta probabilidad. Pensé en usar la ID de variación (3 o 4 bits) como los bits bajos o altos de un número aleatorio grande, pero los usuarios detectarán el patrón en esto. Idealmente, el sistema de encriptación se parametrizaría para que cada instalación de mi sistema utilizara un cifrado ligeramente diferente.
La biblioteca mcrypt de PHP probablemente tenga algo útil en ella, pero no parece ser muy común entre los hosters.
¿Existe una ofuscación/encriptación simple, parametrizada que pueda usar aquí?
Suena como una buena estrategia. También podría XOR toda la cadena con una clave específica de la instalación. Sus intuiciones sobre el nivel de sofisticación de los "atacantes" son muy correctas ... :) – thenickdude