Antonio;
Viendo la documentación sino me equivoco creo que hay un pequeño bug en la función Hb_ZipFile(), te comento y a ver si es correcto:
- Cuando se crea el fichero ZIP en la función Hb_ZipFile() dentro de esta función esta la siguiente función Hb_ZipFileCreate():
- Code: Select all Expand view
hb_ZipFileCreate( hZip, hb_FNameMerge( iif( lWithPath, cPath, NIL ), cName, cExt, iif( lWithDrive, cDrive, NIL ) ),;
tTime, NIL, NIL, NIL, NIL, nLevel, cPassword, iif( Empty( cPassword ), NIL, hb_ZipFileCRC32( cFileToZip ) ), NIL )
Para mi este parámetro no tiene sentido para poder controlar las contraseñas en el ZIP:
- Code: Select all Expand view
iif( Empty( cPassword ), NIL, hb_ZipFileCRC32( cFileToZip ) )
Por lo siguiente:
Sino se le indica contraseña, graba NIL, pero sino lo que guarda es el CRC del fichero, en vez de guardar la contraseña en hexadecimal por ejemplo. Como cada vez que se crea un fichero ZIP su CRC es distinto, nunca esta relacionado el CRC con la contraseña, por tanto, es imposible poder obtener la contraseña que le hemos indicado.
Esta linea creo que debería ser algo así:
- Code: Select all Expand view
iif( Empty( cPassword ), NIL, HB_STRTOHEX( cPassword ) )
Y luego, antes de descomprimir los ficheros podriamos hacer hb_ZipFileCRC32() para obtener el CheckSum del fichero que en realiadad sera la contraseña que a su vez podemos compararla con la que ha introducido el usuario haciendo :
- Code: Select all Expand view
If( cPassw == Hb_HexToStr( hb_ZipFileCRC32( cFile ) ) )
? "descomprimimos"
ELSE
? "La contraseña no es la correcta"
¿ es correcto todo esto ?
A la espera de noticias;
Un saludo
JLL