在 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 不被认为是安全的。避免使用它。