C zip library that can create password protected zip files on windows? C zip library that can create password protected zip files on windows? windows windows

C zip library that can create password protected zip files on windows?


MINIZIP + zlib supports AES 256 encryption, and is very easy to use!

Code based on minizip unzip.c.include stdio.h zip.h unzip.h

First, create a zip with a file inside with a password. The zip file must be in the same directory as the executable. Run the program from a prompt in the directory of the generated program. This example only extracts the first file!

/*-----------start-------------- *//*Tries to open the zip in the current directory.*/unzFile zfile =  unzOpen("teste.zip");if(zfile==NULL) {    printf("Error!");    return;}printf("OK Zip teste.zip opened...\n");int err = unzGoToFirstFile(zfile);/*go to first file in zip*/if (err != UNZ_OK){    printf("error %d with zipfile in unzGoToFirstFile\n", err);     unzClose(zfile);/*close zip*/}/*At this point zfile points to the first file contained in the zip*/char filename_inzip[256] = {0};/* The file name will be returned here */unz_file_info file_info = {0};/*strcuture with info of the first file*/err = unzGetCurrentFileInfo(zfile, &file_info, filename_inzip, sizeof(filename_inzip), NULL, 0, NULL, 0);if (err != UNZ_OK){    printf("error %d with zipfile in unzGetCurrentFileInfo\n",err);}else{    int len = 8192;/*size of chunk*/    char buffer[8192]={0};/*buffer used to save uncompressed data*/    printf("name of first file is :%s\n",filename_inzip);    printf("uncompressed_size = %d\n",file_info.uncompressed_size);    /*Use your password here, the same one used to create your zip */    err = unzOpenCurrentFilePassword(zfile, "yourpassword");    if (err != UNZ_OK)        printf("error %d with zipfile in unzOpenCurrentFilePassword\n", err);    else        printf("password ok\n");    FILE *fp = fopen(filename_inzip, "wb");/*file for data binary type*/    if (fp != NULL)     {        do        {/*read the current file returned by unzGoToFirstFile to buffer in chunks of the 8192*/            err = unzReadCurrentFile(zfile, &buffer, len );            if (err < 0)            {                printf("error %d with zipfile in unzReadCurrentFile\n", err);                break;            }            if (err == 0)                break;            /*Save the chunk read to the file*/            if (fwrite(&buffer, err, 1, fp) != 1)/*if error break*/            {                printf("error %d in writing extracted file\n", errno);                err = UNZ_ERRNO;                break;            }/*else continue*/        }        while (err > 0);        /*close file*/        fclose(fp);    }}unzClose(zfile);