Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

166
Views
¿La salida de compresión GZIP es estable?

Necesito almacenar de forma remota algunos fragmentos de datos y compararlos también para ver si hay duplicaciones. Voy a compilar un programa en C específico y me gustaría comprimir estos fragmentos con GZIP.

Mi duda es: si comprimo el mismo trozo de datos con el mismo programa C usando una biblioteca gzip en diferentes computadoras, ¿dará exactamente el mismo resultado o podría dar resultados comprimidos diferentes?

Las PC/servidores de destino podrían tener diferentes sistemas operativos Linux como Ubuntu/CentOs/Debian, etc.

¿Puedo forzar el mismo resultado vinculando estáticamente una biblioteca gzip específica?

over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

si comprimo la misma porción de datos con el mismo programa C usando una biblioteca gzip en diferentes computadoras, ¿dará exactamente el mismo resultado o podría dar resultados comprimidos diferentes?

Si bien puede ser cierto en la mayoría de los casos, no creo que pueda hacer esta suposición con seguridad. La salida comprimida puede diferir según el nivel de compresión predeterminado y la codificación utilizada por la biblioteca. Por ejemplo, la herramienta GNU gzip usa LZ77 y OpenBSD gzip usa compress ( según Wikipedia ). No sé si esta diferencia proviene de diferentes bibliotecas o diferentes configuraciones de la misma biblioteca, pero no obstante, realmente evitaría asumir que una porción genérica de datos comprimidos con gzip es exactamente igual cuando se comprime usando diferentes implementaciones.

¿Puedo forzar el mismo resultado vinculando estáticamente una biblioteca gzip específica?

Sí, esto podría ser una solución. Usar la misma versión de la misma biblioteca con la misma configuración en diferentes sistemas le daría la misma salida comprimida.


También podría evitar este problema de otras maneras:

  1. Realice la compresión en el servidor y solo envíe datos sin comprimir (probablemente esta no sea una buena solución ya que el envío de datos sin comprimir es lento).
  2. Use hashes de los datos sin comprimir, guárdelos en el servidor y verifíquelos haciendo que el cliente envíe primero un hash y luego los datos comprimidos en caso de que el servidor diga que el hash no coincide (es decir, el fragmento no es un duplicado). Esto también tiene la ventaja de que solo necesita verificar el hash (y evitar la compresión por completo si el hash coincide).
  3. Similar a la opción 2, use hashes de los datos sin comprimir, pero siempre envíe datos comprimidos al servidor. Luego, el servidor realiza la descompresión (que se puede hacer fácilmente en la memoria utilizando un búfer relativamente pequeño) y procesa los datos sin comprimir para verificar si el fragmento recibido es un duplicado antes de almacenarlo.
over 4 years ago · Santiago Trujillo Report

0

No, a menos que esté 100 % seguro de que está utilizando exactamente la misma versión del mismo código fuente con la misma configuración y de que ha desactivado la marca de tiempo modificada en el encabezado gzip.

No está claro qué está haciendo con estos fragmentos comprimidos, pero si la idea es tener menos para transmitir y comparar, entonces puede hacerlo mucho mejor con un hash. Use un SHA-256 en sus fragmentos sin comprimir, y luego podrá transmitirlos y compararlos en poco tiempo. La probabilidad de una coincidencia accidental es tan infinitesimalmente pequeña que tendrías que esperar a que todas las estrellas se apaguen para ver uno de esos sucesos.

over 4 years ago · Santiago Trujillo Report

0

¿Puedo forzar el mismo resultado vinculando estáticamente una biblioteca gzip específica?

Eso no es suficiente, también necesita el mismo nivel de compresión como mínimo, así como cualquier otra opción que pueda tener su biblioteca (por lo general, es solo el nivel).

Si usa la misma versión de la biblioteca y el mismo nivel de compresión, es probable que la salida sea idéntica (o estable, como usted la llama). Sin embargo, esa no es una garantía muy sólida, recomendaría usar una función hash en su lugar, para eso están destinados.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!