Estoy desarrollando una aplicación web que no revela el recuento de registros, porque oculta la clave principal. Estoy buscando una mejor manera de hacer esto.
Mi idea favorita es cifrar la ID en sí misma con un cifrado de bloque, ya que eso no requeriría tablas de seguimiento adicionales, y si el tamaño del bloque es igual al tamaño de la clave, debería funcionar bien.
Sin embargo, no quiero un tamaño de bloque de 128 bits, ya que tomaría un tiempo escribir example.com/records/MTZjaHJzRm9yMTI4Yml0cw
(representación de Base 64)
El tamaño ideal del bloque sería totalmente ajustable. Quiero poder hacer una entrada de ID de 8 dígitos que resulte en una salida de 8 dígitos, es decir, libre de colisiones usando una clave aleatoria almacenada permanentemente. La entrada sería la clave principal real, y la salida sería el identificador que se muestra al público. ¿Puedo decidir cambiar la longitud de los dígitos o cambiar a los identificadores de Base64, y me gustaría que el algoritmo fuera lo suficientemente flexible para acomodar esto?
¿Puede recomendar una rutina de cifrado para datos y salidas tan cortos? No me importa si la clave es corta o no, solo deben ser los datos y la salida.