2012-07-26 16 views
6

Estoy buscando un componente u otra técnica para comprimir y cifrar múltiples archivos grandes (archivos que superan el tamaño de 4 gb, y por lo tanto no caben en la memoria disponible para un proceso win32) en un solo archivo. Me gustaría que el cifrado sea muy fuerte (256 bit AES o mejor) pero la compresión no me importa.¿Cómo puedo comprimir y encriptar un archivo grande sin usar DLL externos o tiempos de ejecución?

En este momento, estoy usando el componente TJvZlibMultiple que crea su propio formato de archivo no Zip, pero tengo que crear el archivo, luego encriptarlo en un paso separado (estoy usando DcpCrypt en este momento). Me gustaría hacer lo mismo en una sola pasada, usando transmisiones, sin usar memoria igual al tamaño del archivo (ergo, la compresión y el cifrado deberían ocurrir con transmisiones, y no en la memoria).

He visto, y no quiero usar, cualquier cosa que requiera un DLL externo como el 7zip dll. Las herramientas comerciales están bien, o cualquier código o fuente de Delphi de muestra, pero estoy buscando una implementación completa dentro de Delphi, no es algo que importe e invoque funciones en un dll.

+4

estoy de acuerdo con las 2 votos para cerrar! (esp sin ninguna explicación). –

+0

@ François, los dos votos fueron ambos de que la pregunta no fue constructiva, lo que en este contexto probablemente signifique que se opusieron a la solicitud de componentes porque limita con una pregunta de encuesta. Me alejé un poco más de esa frontera al hacerle la pregunta más general sobre cómo lograr el objetivo establecido en lugar de pedir específicamente un componente. La mayoría de las respuestas probablemente sugerirán componentes o bibliotecas de todos modos. –

+1

Gracias @RobKennedy. De hecho, se ve mejor así. –

Respuesta

2

Eche un vistazo a DIZipWriter.

Admite 256 bit AES, transmisión y compresión.

Actualización: La versión 5 afirma tener soporte para entradas de gran tamaño (64 bits), DIZipWriter History.

+0

Quité el indicador de respuesta de esta pregunta porque aunque este componente tiene un hermoso soporte de cifrado, usa Cardinal (32 bits) en lugar de int64 para parámetros de tamaño de archivo y posición, lo que significa que el desarrollador no ha pensado en usar su componente con archivos> 4 GB de tamaño. Como esa era la parte fácil, ni siquiera comencé a sospechar que hubiera cometido un error tan fácil. Pero al mirar la versión descargable (que le permite ver las firmas de todas las API), puedo ver que no está lista para archivos grandes. –

-1

Comprobar FlexCompress:

FlexCompress es un componente Delphi compresión diseñado para la creación de archivos con cifrado de alta seguridad y una mejor tasa de compresión de WinZip y RAR. Native VCL, sin DLL, sin OCX, proporciona compresión para archivos, búferes, secuencias y cadenas, admite archivos en memoria, comprime archivos grandes> 4 Gb con bajo consumo de memoria y muchas otras funciones útiles.

http://www.componentace.com/flexcompress_features.htm

por este enlace: http://delphi.about.com/od/toppicks/tp/delphi_zip.htm

+0

Ya sugiero arriba. Hace que tu respuesta se duplique. Acabo de votar, por favor, –

Cuestiones relacionadas