Compare dos sumas de comprobación de archivo
Comparar sumas de comprobación es una forma rápida de confirmar que un archivo llegó con el mismo contenido que tenía antes de transferirse.
Ejecutar — gratis
Indique el valor registrado en el origen y el calculado en el destino con el mismo algoritmo. Esta herramienta los compara sin diferenciar mayúsculas de minúsculas, rechaza valores de distinta longitud y devuelve un resultado inequívoco. No carga, examina ni procesa el archivo: usted conserva el control tanto del archivo como del cálculo de sus sumas de comprobación.
Compare los valores del origen y del destino
Calcule una suma de comprobación del archivo antes de que salga del origen y otra cuando termine la transferencia. Ambos cálculos deben emplear el mismo algoritmo y la misma configuración. Pegue el primer valor en checksum_before y el segundo en checksum_after. El comparador elimina los espacios exteriores, confirma que ningún valor esté vacío y comprueba que los dos tengan el mismo número de caracteres. Después compara las cadenas sin distinguir mayúsculas de minúsculas. Esto resulta útil para resúmenes hexadecimales: una utilidad puede imprimir letras minúsculas y otra mayúsculas aunque los bytes representados sean idénticos. Un resultado verdadero significa que las representaciones coinciden; uno falso indica que al menos un carácter difiere. El resultado también muestra la longitud validada para documentar la representación comparada. La herramienta no deduce el algoritmo a partir de esa longitud, ya que varios formatos pueden compartirla y una cadena no demuestra por sí sola qué algoritmo la produjo. Registre el algoritmo por separado en su procedimiento para que el cálculo de destino corresponda de forma fiable al método utilizado en el origen.
Interprete una coincidencia sin exagerar su alcance
Cuando el resultado es verdadero, las dos cadenas son iguales tras normalizar las mayúsculas y minúsculas. Esto aporta evidencia sólida de que el archivo transferido produjo el mismo resumen que el original con el algoritmo elegido. No demuestra que esta página haya calculado ninguno de los valores, pues el comparador solo recibe las dos cadenas. Tampoco detecta un error operativo si ambos valores se copiaron del mismo lugar o se calcularon sobre el archivo equivocado. Si el resultado es falso, repita ambos cálculos directamente sobre los archivos previstos antes de volver a transferir nada. Una diferencia puede deberse a corrupción, una carga incompleta, una conversión en modo texto, un archivo comprimido modificado o un valor pegado desde otro artefacto. Las longitudes distintas generan un error, no un resultado falso, porque la capacidad presupone que ambos valores proceden del mismo algoritmo. Con ese supuesto, las representaciones de longitud desigual señalan una configuración o copia errónea que debe corregirse. Solo se ignora el uso de mayúsculas. Los espacios internos, signos, prefijos y separadores siguen formando parte del valor, por lo que conviene usar formatos equivalentes o retirar los adornos propios de cada utilidad.
Integre la comparación en su flujo de transferencias
Para una descarga ocasional, calcule los valores de origen y destino con herramientas locales de confianza, anote claramente el algoritmo y use esta comparación como segunda comprobación. En una entrega automatizada, guarde la suma de origen junto al artefacto o en un manifiesto firmado, calcule el valor de destino después de completar la escritura final y llame a la API antes de declarar exitosa la transferencia. Una diferencia debe detener la publicación o el despliegue y conservar contexto suficiente para investigar; un par mal formado o de distinta longitud debe tratarse como un error de configuración. Elija el algoritmo de acuerdo con el modelo de amenazas y fiabilidad de su proceso. Los hashes criptográficos modernos son adecuados cuando importan tanto la corrupción accidental como la sustitución deliberada; las sumas antiguas o cortas pueden seguir siendo útiles en sistemas limitados, pero ofrecen otras garantías. Esta capacidad no recomienda ni impone un algoritmo: su función concreta es comparar dos valores ya generados por su flujo con el mismo método. El cálculo determinista no usa red, modelos, azar ni reloj. El navegador y la API devuelven así el mismo resultado, y un sistema automatizado puede comparar por $0.002 por solicitud sin enviar el archivo subyacente.
Qué puede hacer con ella
Verificar una versión descargada
Compare la suma publicada con una versión y el valor calculado después de descargar su archivo.
Controlar una transferencia de artefactos
Detenga un despliegue o una publicación si la suma del destino difiere del valor registrado en el origen.
Comprobar la integridad de una copia
Compare los valores producidos antes y después de copiar una copia de seguridad sin enviar sus datos al comparador.
Preguntas frecuentes
¿La comparación distingue mayúsculas de minúsculas?
No. Las letras mayúsculas y minúsculas se consideran iguales, lo que admite los formatos hexadecimales habituales.
¿Por qué se rechazan longitudes diferentes?
Los valores deben proceder del mismo algoritmo. Una longitud desigual indica formatos o algoritmos incompatibles, o bien un valor copiado de forma incompleta.
¿La herramienta calcula la suma a partir de mi archivo?
No. Compara dos cadenas que usted facilita y nunca necesita recibir el archivo original.
¿Una coincidencia demuestra que la transferencia es segura?
Solo demuestra que los valores suministrados coinciden sin distinguir mayúsculas. La garantía depende también de cómo se calcularon, protegieron y asociaron al archivo correcto.
¿Se ignoran los espacios?
Solo se eliminan los espacios exteriores de cada valor completo. Los espacios o separadores interiores siguen siendo significativos.
¿Cuánto cuesta comparar mediante la API?
Cada solicitud a la API cuesta $0.002. También puede ejecutar la misma comparación determinista en el navegador.
Para desarrolladores — acceso por API
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.
Endpoint de API
¿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.
Llámela desde su stack
curl -X POST https://api.kit.forhosting.com/verify/file-checksum-compare \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"checksum_before":"9e107d9d372bb6826bd81d3542a419d6","checksum_after":"9E107D9D372BB6826BD81D3542A419D6"}'const res = await fetch("https://api.kit.forhosting.com/verify/file-checksum-compare", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"checksum_before": "9e107d9d372bb6826bd81d3542a419d6",
"checksum_after": "9E107D9D372BB6826BD81D3542A419D6"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/verify/file-checksum-compare",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"checksum_before": "9e107d9d372bb6826bd81d3542a419d6",
"checksum_after": "9E107D9D372BB6826BD81D3542A419D6"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/verify/file-checksum-compare", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"checksum_before":"9e107d9d372bb6826bd81d3542a419d6","checksum_after":"9E107D9D372BB6826BD81D3542A419D6"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"checksum_before":"9e107d9d372bb6826bd81d3542a419d6","checksum_after":"9E107D9D372BB6826BD81D3542A419D6"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/verify/file-checksum-compare", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Ejemplo de solicitud
{
"checksum_before": "9e107d9d372bb6826bd81d3542a419d6",
"checksum_after": "9E107D9D372BB6826BD81D3542A419D6"
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "verify.file_checksum_compare",
"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.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |