我有以下简单的 openssl 程序:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <openssl/aes.h>
int main() {
AES_KEY aes;
unsigned char key[] = {0x5A,0x5A,0x5A};
int result;
result = AES_set_encrypt_key(key,128,&aes);
if (result < 0) {
printf(Unable to generate key: "%i",result);
exit(-1);
}
// Each round is 16 bytes (128 bits)
for (int i = 0; i < (aes.rounds + 1) * 4; i = i + 4) {
printf("0x%x 0x%x 0x%x 0x%x\n",aes.rd_key[i],aes.rd_key[i+1],aes.rd_key[i+2],aes.rd_key[i+3]);
}
return 0;
}
我正在尝试使用命令编译它
gcc -I/usr/local/include/openssl -o generateKey -lcrypto -lssl -L/usr/local/lib generatekey.c
/usr/local/include/openssl
包含 aes.h
所以我认为我需要它。 usr/local/lib
包含 libcrypto.a
、libcrypto.so
、libssl.a
和 libssl.so
,所以我认为我也需要这些。当我尝试编译时出现错误
generate_key.c: undefined reference to `AES_set_encrypt_key`
collect2: error: ld returned 1 exit status
还有其他地方我应该链接到以查找 openssl 库吗?我在 Ubuntu 16.04 上运行它。
我已经尝试过 sudo apt-get install libssl-dev
以确保为开发安装了 openssl。