+1 para la respuesta de Sergio, en términos de responder si podrían adivinarse o no, no son hashes, son predecibles, por lo que pueden ser "forzados por fuerza bruta" con tiempo suficiente. La probabilidad depende de cómo se generaron los ObjectID y cómo se trata de adivinar. Para explicar, en primer lugar, leer la especificación aquí:
http://www.mongodb.org/display/DOCS/Object+IDs#ObjectIDs-BSONObjectIDSpecification
Pasemos a continuación descomponerlo pieza por pieza:
- marca de hora - completamente predecible, siempre y cuando usted tiene una idea general de que el los datos se generaron
- Máquina - esto es un hash MD5 de una de varias opciones, algunas de las cuales se determinan más fácilmente que otras, pero altamente dependiente del entorno
- PID - de nuevo, no una gran cantidad de va lues aquí, y podría ser sleuthed para los datos generados a partir de una fuente conocida
- Incremento - si esto es un número aleatorio en lugar de un incremento (ambos están permitidos), entonces es menos predecible
Para ampliar un poco en las fuentes. ObjectID se pueden generar por:
- MongoDB en sí (pero se pueden migrar, movido, actualizado)
- El conductor (en cualquier máquina que inserta o actualiza los datos)
- su solicitud (se puede insertar manualmente su propia de objeto si lo desea)
por lo tanto, hay cosas que puede hacer para hacerlos más difícil de adivinar de forma individual, pero sin mucha premeditación y salvaguardias, para un conjunto de datos normal, los rangos de ObjectID válidos deben estar bastante fácil de resolver, ya que todos tienen un prefijo con una marca de tiempo (a menos que estés manipulando esto de alguna manera).