Cada objeto de usuario en mi base de datos tiene una ID incremental (1, 2, 3, ...). La URL para ver el perfil de un usuario contiene la ID del objeto del usuario; p.ej. http://www.example.com/users/1. De esta forma, todos pueden ver cuántos usuarios hay en el sitio web, qué tan rápido crece la base de usuarios, etc. No quiero dar esa información.Cómo calcular una identificación ofuscada corta de longitud fija similar a YouTube (por ejemplo, 2WNrx2jq184)
Me gustaría convertir el ID incremental a una cadena de longitud fija en formato Base58, por lo que la URL se vería como http://www.example.com/users/2WNrx2jq184 Además, necesito la función inversa que convierte la cadena de nuevo a la ID original. La función inversa no debe ser fácil de aplicar ingeniería inversa.
El mejor código de Python que encontré para este propósito es https://github.com/JordanReiter/django-id-obfuscator. Es muy bueno, pero en algunos casos agrega un carácter 0
y/o .
, lo que conduce a cadenas que no están en Base58 y que no son de longitud fija. (Ver utils.py líneas 24 y 29.)
¿Cómo puedo mejorar django-id-Ofuscador a resultar en base58 de longitud fija identificadores ofuscado, o cómo puedo crear tales identificaciones ofuscado en Python?
supongo que se quiere evitar la creación de un número aleatorio y el almacenamiento de su referencia a la ID real en algún lugar de ¿la base de datos? – Groo
https://github.com/JordanReiter/django-id-obfuscator/blob/master/id_obfuscator/base58.py - esto no parece contener '0' o' .'. – eumiro
@eumiro https://github.com/JordanReiter/django-id-obfuscator/blob/master/id_obfuscator/utils.py - sucede aquí – Korneel