将.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]);
}
我想将 .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]);
}