在 C 中使用 openssl RC4 header 发布编译代码
Issue compiling code with openssl RC4 header in C
我正致力于在 C 中添加一个实现 openssl RC4 功能的测试程序。 Linux 中的手册页为我提供了函数的格式,并说要包含 header 文件,我照做了。但是,当我尝试编译时,它一直给我错误。
/tmp/ccQwY6Sr.o: In function `main':
rc4.c:(.text+0xd5): undefined reference to `RC4_set_key'
rc4.c:(.text+0xef): undefined reference to `RC4'
collect2: error: ld returned 1 exit status
令人惊讶的是,我似乎无法在网上找到有关此特定问题的任何信息。我包含了应该定义它们的 header 文件中的未定义引用如何?
如果有人能在这里指出正确的方向,我将不胜感激。
我的编译行是:
gcc rc4.c -o rc4
我的程序是:
#include <openssl/rc4.h>
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char* argv[])
{
FILE* inFile;
char * bufferIn;
char * bufferOut;
char data[] = "PASSword123";
RC4_KEY * key;
inFile = fopen("/home/chris/Desktop/testfile.txt", "rb+");
fseek(inFile, 0, SEEK_END);
int size = ftell(inFile);
rewind(inFile);
bufferIn = (char*)malloc(sizeof(char)*size);
bufferOut = (char*)malloc(sizeof(char)*size);
fread(bufferIn, 1, size, inFile);
rewind(inFile);
RC4_set_key(key, 11, data);
RC4(key, size, bufferIn, bufferOut);
free(bufferIn);
free(bufferOut);
return 0;
}
my compile line is: gcc rc4.c -o rc4
<openssl/rc4.h>
header 只包含 RC4 函数的声明,不包含它们的定义。这些函数在 libcrypto 库中定义,它是 OpenSSL 的一部分。将 -lcrypto
添加到您的命令行以针对此库 link。
顺便说一句,RC4 不被认为是安全的。避免使用它。
我正致力于在 C 中添加一个实现 openssl RC4 功能的测试程序。 Linux 中的手册页为我提供了函数的格式,并说要包含 header 文件,我照做了。但是,当我尝试编译时,它一直给我错误。
/tmp/ccQwY6Sr.o: In function `main':
rc4.c:(.text+0xd5): undefined reference to `RC4_set_key'
rc4.c:(.text+0xef): undefined reference to `RC4'
collect2: error: ld returned 1 exit status
令人惊讶的是,我似乎无法在网上找到有关此特定问题的任何信息。我包含了应该定义它们的 header 文件中的未定义引用如何?
如果有人能在这里指出正确的方向,我将不胜感激。
我的编译行是:
gcc rc4.c -o rc4
我的程序是:
#include <openssl/rc4.h>
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char* argv[])
{
FILE* inFile;
char * bufferIn;
char * bufferOut;
char data[] = "PASSword123";
RC4_KEY * key;
inFile = fopen("/home/chris/Desktop/testfile.txt", "rb+");
fseek(inFile, 0, SEEK_END);
int size = ftell(inFile);
rewind(inFile);
bufferIn = (char*)malloc(sizeof(char)*size);
bufferOut = (char*)malloc(sizeof(char)*size);
fread(bufferIn, 1, size, inFile);
rewind(inFile);
RC4_set_key(key, 11, data);
RC4(key, size, bufferIn, bufferOut);
free(bufferIn);
free(bufferOut);
return 0;
}
my compile line is: gcc rc4.c -o rc4
<openssl/rc4.h>
header 只包含 RC4 函数的声明,不包含它们的定义。这些函数在 libcrypto 库中定义,它是 OpenSSL 的一部分。将 -lcrypto
添加到您的命令行以针对此库 link。
顺便说一句,RC4 不被认为是安全的。避免使用它。