可以使用openssl库中的函数来解密zip文件内容到缓存,但是不解压。具体步骤如下:

  1. 打开加密的zip文件,读取其中的加密数据。

  2. 使用openssl库中的EVP函数来解密数据。可以使用EVP_DecryptInit()函数来初始化解密上下文,使用EVP_DecryptUpdate()函数来解密数据块,使用EVP_DecryptFinal()函数来完成解密。

  3. 将解密后的数据存储到缓存中。

示例代码如下:

#include <openssl/evp.h>
#include <stdio.h>

int main()
{
    // 打开加密的zip文件,读取其中的加密数据
    FILE* fp = fopen("encrypted.zip", "rb");
    fseek(fp, 0, SEEK_END);
    long size = ftell(fp);
    fseek(fp, 0, SEEK_SET);
    unsigned char* data = (unsigned char*)malloc(size);
    fread(data, 1, size, fp);
    fclose(fp);

    // 初始化解密上下文
    EVP_CIPHER_CTX* ctx = EVP_CIPHER_CTX_new();
    EVP_DecryptInit(ctx, EVP_aes_256_cbc(), (unsigned char*)"password", (unsigned char*)"salt");

    // 解密数据块
    unsigned char* decrypted_data = (unsigned char*)malloc(size);
    int decrypted_size;
    EVP_DecryptUpdate(ctx, decrypted_data, &decrypted_size, data, size);

    // 完成解密
    int final_size;
    EVP_DecryptFinal(ctx, decrypted_data + decrypted_size, &final_size);

    // 将解密后的数据存储到缓存中
    unsigned char* cache = (unsigned char*)malloc(decrypted_size + final_size);
    memcpy(cache, decrypted_data, decrypted_size + final_size);

    // 清理资源
    free(data);
    free(decrypted_data);
    EVP_CIPHER_CTX_free(ctx);

    return 0;
}

其中,EVP_aes_256_cbc()函数表示使用AES-256算法和CBC模式进行加密,"password"和"salt"分别表示密码和盐值。在实际使用中,需要根据实际情况进行修改

在程序中使用代码解密openssl加密的zip文件内容到缓存但是不解压你有方法吗?

原文地址: https://www.cveoy.top/t/topic/e8F2 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录