将.text文件中的文件地址输入到C++中的OpenSSL加密函数?

Inputting a file address from a .text file to OpenSSL encryption function in C++?

我想将 .txt 文件的多行输出定向到该 encrypt() 函数。 .txt 文件包含我要加密的文件的地址。代码编译但没有加密。我正在使用 EVP_aes_256_cbc() 进行加密。我做错了什么?

int encrypt(unsigned char* plaintext, int plaintext_len, unsigned char* key, unsigned char* iv, unsigned char* ciphertext);
int decrypt(unsigned char* ciphertext, int ciphertext_len, unsigned char* key, unsigned char* iv, unsigned char* plaintext);


int main() {
    unsigned char key[16];
    RAND_bytes(key, sizeof(key));

    unsigned char iv[16];
    RAND_bytes(iv, sizeof(iv));

    std::ifstream file("C:\Users\NULL\source\repos\xFolder\YFolder\test.txt");
    std::string str;
    while (std::getline(file, str))
    {
        int encrypt(unsigned char* str, int plaintext_len, unsigned char* key,unsigned char* iv, unsigned char* ciphertext);
    } 

在C++中,\用于转义序列,所以你必须写\来表达\在字符串文字中。

您实际上为第一个和最后一个 \ 执行了此操作,但您必须为其他 \ 执行此操作。

    std::ifstream file("C:\Users\NULL\source\repos\xFolder\YFolder\test.txt");

应该是

    std::ifstream file("C:\Users\NULL\source\repos\xFolder\YFolder\test.txt");

也在这个循环中

    while (std::getline(file, str))
    {
        int encrypt(unsigned char* str, int plaintext_len, unsigned char* key,unsigned char* iv, unsigned char* ciphertext);
    } 

您没有调用该函数,而只是声明了它。

您应该调用该函数进行加密。可能是这样的:

    while (std::getline(file, str))
    {
        std::vector<unsigned char> encrypted_str(str.size()); // you may need some more bytes
        encrypt(reinterpret_cast<unsigned char*>(str.data()), str.size(), key, iv, &encrypted_str[0]);
    }