在C中使用openssl RC4标头发布编译代码

时间:2019-04-10 18:42:45

标签: c linux openssl rc4-cipher

我正在努力在C语言中添加一个实现openssl RC4功能的测试程序。 Linux的手册页为我提供了功能的格式,并说包括了我所做的头文件。但是,当我尝试编译时,它总是给我错误。

/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

令人惊讶的是,我似乎无法在线找到有关此特定问题的任何信息。我未定义的引用中如何包含应该定义它们的头文件?

如果有人能在这里为我指明正确的方向,我将不胜感激。

我的编译行是:

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;
}

1 个答案:

答案 0 :(得分:0)

  

我的编译行是:gcc rc4.c -o rc4

<openssl/rc4.h>标头仅包含RC4函数的声明,而不包括它们的定义。这些功能在libcrypto库中定义,该库是OpenSSL的一部分。将-lcrypto添加到命令行以链接到该库。

顺便说一句,RC4不被认为是安全的。避免使用它。