2010-05-02 10 views
5

En el artículo de Wikipedia en Block Cipher Modes tienen un pequeño diagrama ordenado de una imagen no encriptada , la misma imagen encriptada usando el modo ECB y otra versión de la misma imagen encriptada usando otro método.¿Cómo mostrar o ver datos encriptados en forma encriptada?

UnencryptedECB ModeCBC Mode

En la universidad he desarrollado mi propia implementación de DES (you can find it here) y debemos demostración de nuestra implementación de una presentación.

Me gustaría mostrar un ejemplo similar al que se muestra arriba utilizando nuestra implementación. Sin embargo, la mayoría de los archivos de imagen tienen bloques de encabezado asociados a ellos, que al cifrar el archivo con nuestra implementación, también se cifran. Entonces, cuando vaya a abrirlos en un visor de imágenes, se supone que están dañados y no se pueden ver.

Me preguntaba si alguien nuevo de un formato de imagen sin encabezado simple que podríamos utilizar para mostrar esto? ¿O si alguien tenía alguna idea de cómo el creador original de las imágenes de arriba logró el resultado anterior?

Cualquier ayuda se agradece,

Gracias

Nota: Me di cuenta rodando su propia biblioteca de criptografía es estúpida, y DES se considera roto, y el modo BCE es muy deficiente para cualquier criptografía útil, esto era puramente un ejercicio académico para la escuela. Entonces, por favor, no hay conferencias, sé el ejercicio.

Respuesta

3

Si está utilizando un lenguaje de alto nivel, como Java, python, etc., una cosa que podría hacer es cargar una imagen y leer los datos de píxeles en una matriz en la memoria. A continuación, realice el cifrado en esos bytes sin procesar, luego guarde la imagen cuando haya terminado. Deje que todos los datos del encabezado sean manejados por las bibliotecas de cualquier idioma que esté usando. En otras palabras, no trate el archivo como una secuencia de bytes sin formato. Espero que ayude.

+0

+1 Iba a sugerir lo mismo. –

+0

Sí, he considerado esto. Lo desarrollamos en C++, y no se supone que usemos bibliotecas externas. Además, se supone que nuestro programa es de propósito general para encriptar cualquier archivo. Gracias por la respuesta sin embargo. –

+0

@Brian, es realmente trivial cargar y guardar archivos de mapa de bits de 32 bits (sin paleta). No necesita una lib de terceros. –

3

Simplemente corte los encabezados antes de encriptar (guárdelos en algún lugar). Luego encripta solo el resto. Luego agrega los encabezados al frente del resultado.

Esto es especialmente fácil con el formato Netpbm, porque solo tiene que saber cuántas líneas cortar. Los datos se almacenan como números decimales, por lo que probablemente debería tener esto en cuenta al encriptarlos (primero conviértalos en binarios).

+0

Esto solo funcionaría para algunos formatos de imagen, que almacenan valores de píxeles "simples" (quizás BMP, TGA o PPM, no GIF, PNG, JPEG) e incluso entonces, uno debe considerar cuántos bytes por píxel/fila hay, y ¿Cómo se relaciona esto con el tamaño del bloque del codificador? De lo contrario, los resultados no tendrían sentido – leonbloy

+0

@leonboy: Cierto, estaba actualizando mi respuesta mientras escribía el comentario. –

Cuestiones relacionadas