仅从 Polarssl 运行 aes 的文件



我试图在我的程序中只使用aes。我已经复制了文件

  1. 配置.h
  2. AES.H
  3. 哈维格·

到文件夹 Polarssl。但是当我运行程序时

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "polarssl/aes.h"
#include "polarssl/havege.h"
int main()
{
    char buff[2][64] = {"ABCDEFGHIJKLMN", ""};
    havege_state hs;
    int retval;
    unsigned char IV[16];
    unsigned char IV2[16];
    unsigned char key[32];
    aes_context enc_ctx;
    aes_context dec_ctx;
    havege_init(&hs);
    havege_random(&hs, IV, 16);
    havege_random(&hs, key, 32);
    strncpy(IV, IV2, 16);           //copy IV
    aes_setkey_enc(&enc_ctx, key, 256);
    aes_setkey_dec(&dec_ctx, key, 256);

    //encrypt
    aes_crypt_cbc(&enc_ctx, AES_ENCRYPT, 64, IV, buff[0], buff[1]);
    printf("Before encrypt:%sn", buff[0]);
    //decrypt
    aes_crypt_cbc(&dec_ctx, AES_DECRYPT, 64, IV2, buff[1],buff[0]);
    printf("After decrypt:%sn", buff[0]);
    return 0;
}

我收到错误

In function `main':
ex.c:(.text+0x68): undefined reference to `havege_init'
ex.c:(.text+0x86): undefined reference to `havege_random'
ex.c:(.text+0xa4): undefined reference to `havege_random'
ex.c:(.text+0xe0): undefined reference to `aes_setkey_enc'
ex.c:(.text+0xfe): undefined reference to `aes_setkey_dec'
ex.c:(.text+0x133): undefined reference to `aes_crypt_cbc'
ex.c:(.text+0x17e): undefined reference to `aes_crypt_cbc'
collect2: error: ld returned 1 exit status

在头文件旁边,您还需要 .c 文件!(aes.c, havege.c) 并在代码中编译它们。

在实现端:* 您确定要使用 HAVEGE 吗?对其有效性有很多疑问(取决于您运行的系统),标准化的CTR-DRBG似乎是一个更好的选择。

我认为

您的错误与链接到 Aes 和 Havege 文件有关。您的编译器无法识别它们!它们是否与您的主文件夹位于同一文件夹中?如果它们位于同一文件夹中,则从顶部的头文件名中删除"polarssl/"。

或者,也许,在编译时一定要包括 aes.c 和 aes.h。我发现由于这个原因我得到了同样的错误。我只在编译中包括 aes.h。例

$terminal: gcc main.c aes.h aes.c -o encrypt

只是想知道?如果你只想使用 aes,你为什么要尝试使用 havege.h?

最新更新