ForHosting KIT · Utilidades de desarrollo

Bits de hash para resistencia a colisiones

Guardar 1.000.000 de elementos con, como mucho, una probabilidad entre un millón de colisión exige 59 bits de hash, el ancho mínimo que cumple la cota del cumpleaños. También verá el espacio de hash y el riesgo estimado con ese ancho. Gratis en su navegador.

  • Gratis
  • Funciona en su navegador
  • Sin registro
  • Sus datos no salen de su equipo
Úselo desde WebAPIEmailTelegramApp pronto
Si escribe
Elementos
1 000 000
Probabilidad máxima
0,000001
Obtiene
Bits necesarios
59
Probabilidad de colisión aproximada
0,0000008674
Espacio de hash
2^59

Al elegir la longitud de un hash para identificadores, claves de caché, resúmenes de contenido o códigos cortos, la pregunta difícil no es solo si el digest basta para seguridad de preimagen, sino cuántos elementos puede almacenar antes de que dos hashes choquen por azar. Esta calculadora resuelve ese dimensionamiento con la cota clásica del cumpleaños. Usted indica el número esperado de elementos y la probabilidad máxima de colisión que acepta; recibe la menor anchura entera en bits que mantiene el riesgo aproximado de colisión por pares en o por debajo de ese objetivo, más el tamaño del espacio de hash y la probabilidad aproximada a esa anchura.

Cota del cumpleaños y por qué la longitud del hash crece con el cuadrado del conjunto

Un hash aleatorio uniforme de b bits envía cada elemento a un espacio de tamaño dos elevado a b. Con un solo elemento no hay nada con lo que colisionar, pero al insertar muchos valores el número de pares no ordenados crece como n sobre dos. Cada par colisiona con probabilidad aproximada de uno entre el tamaño del espacio, de modo que el número esperado de pares en colisión es aproximadamente n por n menos uno entre dos por dos elevado a b.

Cuando esa expectativa es pequeña, también es una buena aproximación de la probabilidad de al menos una colisión. Despejando para una probabilidad objetivo p se obtiene la regla de dimensionamiento: bits igual al techo del logaritmo en base dos de n por n menos uno entre dos p. De forma equivalente, bits es aproximadamente el doble del logaritmo de n menos el logaritmo de p, menos uno.

Esa estructura de raíz cuadrada es la famosa paradoja del cumpleaños en versión de ingeniería: para mantener colisiones raras con mil millones de elementos necesita mucho más de treinta bits de hash, y la resistencia criptográfica a colisiones frente a un adversario que puede probar dos elevado a sesenta y cuatro hashes empuja clásicamente a digests de ciento veintiocho bits o más.

Esta herramienta usa solo la aproximación de la cota del cumpleaños —no modela hashes no uniformes, construcciones HMAC truncadas ni ataques de multicolisión más allá del par básico—, así que trate la respuesta como cota inferior de planificación para digests de aspecto aleatorio y añada margen por rarezas de implementación y modelos de amenaza que van más allá de colisiones por azar.

Planificación de longitud de identificadores y códigos cortos

Los ingenieros de producto dimensionan la anchura en bits de hashes truncados o ID aleatorios para que las colisiones esperadas entre conteos proyectados de usuarios u objetos queden bajo un presupuesto de riesgo escrito.

Claves de caché y resúmenes de contenido

Los equipos de plataforma eligen longitudes de digest para cachés e índices de deduplicación recorriendo conteos de elementos y probabilidades objetivo en lugar de adivinar números redondos.

Enseñar la cota del cumpleaños

Instructores y herramientas de preparación de entrevistas demuestran por qué el riesgo de colisión escala con n al cuadrado y recuperan de forma determinista los umbrales clásicos de aula de sesenta y cuatro bits.

¿Qué fórmula usa la cota del cumpleaños?

La probabilidad de colisión se aproxima como n(n-1)/(2·2^b).

¿Es gratuita la calculadora de bits de hash?

La herramienta del navegador se ejecuta gratis en su dispositivo.

¿Sustituye esto una revisión de seguridad criptográfica?

No. Solo dimensiona colisiones por azar entre pares para hashes uniformes. La elección de algoritmo, el truncado, la búsqueda adversaria de colisiones y la fuerza de preimagen siguen necesitando un análisis de seguridad aparte.

¿Por qué las colisiones de hash aparecen antes de lo esperado?

Porque lo que cuenta son las parejas, no los elementos. El número de parejas crece aproximadamente con el cuadrado de los elementos y cada pareja puede chocar, así que el riesgo sube mucho más deprisa que la cantidad. Es la paradoja del cumpleaños.

¿El resultado vale para cualquier función hash?

Supone un hash uniforme y de apariencia aleatoria, y usa la cota básica por parejas. No modela hashes desiguales, hashes con clave recortados ni ataques de colisiones múltiples, así que tómelo como un mínimo de planificación y añada margen.

Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.

POSThttps://api.kit.forhosting.com/dev/hash-bits-for-collision

¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, por email y desde Telegram — y pronto también desde nuestra app.

curl -X POST https://api.kit.forhosting.com/dev/hash-bits-for-collision \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"items":1000000,"max_probability":0.000001}'
{
  "items": 1000000,
  "max_probability": 0.000001
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "dev.hash_bits_for_collision",
  "status": "queued",
  "_links": {
    "result": "/tasks/tsk_…/result"
  }
}

La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.

Por solicitud$0.002

Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.

HTTPCódigoSignificado
401unauthorizedAPI key ausente o inválida.
402insufficient_balanceEl saldo no cubre el precio de la tarea.
404unknown_typeEl tipo de tarea no existe.
429rate_limitedDemasiadas peticiones. Use el webhook en vez de sondear.

La misma aritmética pura corre gratis en el navegador y como ítem de API facturable, de modo que demos didácticas, documentos de diseño y scripts de automatización comparten un contrato determinista sin ruido de muestreo y sin modelo de lenguaje.

Contrato de entrada, reglas de validación y campos de respuesta

Ejemplo: un millón de elementos con objetivo de uno entre un millón rinde del orden de cincuenta y nueve bits y un espacio de hash de dos a esa potencia. Comprobaciones clásicas de aula como unos cuatro mil millones de elementos al cincuenta por ciento de riesgo recuperan la familiar cifra de sesenta y cuatro bits. Envíe un cuerpo JSON con dos campos obligatorios. items es un entero positivo de uno hasta un cuatrillón (uno por diez elevado a quince) que describe cuántos valores espera hashear o almacenar; se aceptan los alias n, count y num_items. max_probability es un número finito estrictamente entre cero y uno con la mayor probabilidad de colisión que tolerará bajo la cota; los alias p, probability, target_probability y max_collision_probability funcionan igual. Campos ausentes, no enteros en items, probabilidades no finitas, conteos cero o negativos, probabilidades de cero o uno o fuera del rango publicado fallan con invalid_input y no se facturan. En éxito la respuesta repite items y max_probability, devuelve bits_needed como la menor anchura entera no negativa en bits, approximate_collision_probability como la estimación de la cota a esa anchura (usando uno menos exp de menos lambda cuando lambda no es minúsculo), hash_space como la cadena dos circunflejo bits_needed, y una cadena corta de fórmula que documenta la regla.

Cuándo usar la calculadora, precios y límites honestos del modelo

Use la herramienta gratuita del navegador al diseñar esquemas de identificadores, elegir longitudes de hash truncado para URL o claves de base de datos, o enseñar por qué duplicar el tamaño del conjunto cuesta aproximadamente un bit extra y no cero. El modelo asume hashes ideales uniformes e independientes y la aproximación estándar de pares del cumpleaños; no le avisará de entradas estructuradas que rompen la uniformidad, de preimagen segunda o extensión de longitud, ni de búsqueda adversaria de colisiones más barata que la fuerza bruta en una familia de hash rota. Use la API cuando un pipeline de diseño, un asistente de cuestionarios de seguridad, un planificador de capacidad o una plataforma curricular necesite JSON estable para muchos pares n y p bajo un solo contrato. Cada petición exitosa es un ítem facturable a $0.002; la validación fallida no consume saldo. Interprete siempre bits_needed como cuán ancho debe ser un digest de aspecto aleatorio para que las colisiones por azar entre n elementos queden bajo p, y valide por separado el algoritmo real y la política de truncado.

¿Cómo calculo los bits de hash para resistencia a colisiones?

Envíe enteros items (o n) y un max_probability p estrictamente entre 0 y 1. La API devuelve bits_needed = ceil(log2(n*(n-1)/(2*p))) bajo la cota del cumpleaños, más la probabilidad aproximada y hash_space.

¿Qué ocurre si items es 1?

Con un solo elemento no hay par que colisione, así que bits_needed es 0 y approximate_collision_probability es 0. Conteos menores que 1 se rechazan como invalid_input.

Ver la documentación completa del KIT →