Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

246
Visualizações
¿Cómo generar una identificación única garantizada para los archivos almacenados en el servidor?

Soy un completo novato en la programación del lado del servidor. Actualmente estoy escribiendo un servicio para almacenar archivos de usuarios enviados desde la aplicación ios. Me gustaría generar una identificación única para cada archivo y también usarla como nombre de archivo. El problema es que muchas de las soluciones, como el uso de una función hash, que encontré en línea tienen el riesgo de colisión. Entonces, ¿cuál es la forma preferida de hacer eso? Sé que AWS s3 genera una identificación única para cada archivo. ¿Cómo implementaron esto?

about 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Cualquiera que sea el lenguaje de programación que use, probablemente tenga una biblioteca GUID (a veces llamada UUID) que puede considerarse universalmente única. Ver https://en.wikipedia.org/wiki/Universally_unique_identifier

Hashing no resolverá este problema en absoluto, porque el punto de un hash es que dos entradas idénticas deberían dar como resultado dos salidas idénticas. Por lo tanto, si dos usuarios cargan ThisIsAFile.pdf , ambos tendrán que decir a89na3 y habrá una colisión.

about 4 years ago · Santiago Trujillo Relatório

0

Una forma posible es generar una identificación aleatoria amplia. Si genera un nombre aleatorio de varias docenas de caracteres como _5E960vkoXF8_6t2yfMbEM0A_6uBsy060PxH_2YKKKmZkTR6 , la probabilidad de colisión puede hacerse lo suficientemente pequeña como para ser insignificante (por ejemplo, su sistema necesitaría ejecutar muchos miles de millones de años para observar una sola colisión). Si desea estimar esa probabilidad, use el enfoque del problema del cumpleaños .

(las colisiones no siempre son un problema, si puede hacer que su probabilidad sea lo suficientemente pequeña)

Los UUID están explotando esta idea. Entonces, la forma más sencilla es usar una función de biblioteca que los genere, por ejemplo, uuid_generate . Es posible que desee hacer lo mismo (es decir, codificar su propio generador de identificación aleatoria), pero debe tener cuidado con la aleatoriedad.

Al menos, podría usar un buen PRNG (como uno de Mersenne twister ) que sembraría periódicamente (y al inicio) con algo de ruido aleatorio, por ejemplo, usando /dev/random (léase cuidadosamente random(4) ...) o obtener al azar (2) . O puede comprar alguna fuente de hardware de generación aleatoria (como OneRNG ).

Por cierto, si supone que el contenido de los archivos del usuario no cambia (por lo que cada archivo se escribe una vez en el momento de la creación), podría usar alguna función hash criptográfica en ellos (como SHA 256 ). Luego, si dos usuarios distintos subieran exactamente el mismo contenido (por ejemplo, el texto de GPLv3 ), lo almacenaría una vez en su disco (en algún archivo compartido ). El proyecto https://www.softwareheritage.org/ está utilizando dicha técnica.

(por razones de cardinalidad, las colisiones siguen siendo teóricamente posibles, pero altamente improbables)

No querrás que las colisiones sean matemáticamente imposibles. Probablemente quieras tenerlos muy improbables: si la probabilidad es menor que 10 -50 (o solo 10 -30 que es alrededor de 2 -100 ) probablemente no debería importarte (ya que nuestro planeta Tierra desaparecerá antes de que la colisión sea probable que ocurra). suceder).

about 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda