我在这个问题上搜索了存档的消息,但是现有的问题似乎与我没有关系,因为据我所知,我正在使用正确的加密参数长度。无论如何,我的代码非常简单但不幸的是我在加密消息时遇到了段错误,它发生在消息加密期间调用第一个xor_block_aligned方法时。我假设我错误地定义了一些东西,因为代码没有以任何方式被修改。
我正在使用Key,IV和Header的硬编码值,如下所示......
unsigned char* pChrIV = (unsigned char*)malloc(24);
memset(pChrIV, 1, 24);
unsigned char* pChrHeader = (unsigned char*)malloc(16);
memset(pChrHeader, 1, 16);
char* pChrMessage = "jfdk vklsdfasdfjdsajhfljasdfjhsdakjfkjhdsfsdliuhfhdsuihfausdhflhalsdjkhflaskdjfadjf nvkjsdnf kj nfdlkjnv lkjsdnf vkjndsf lkvjlkdfsj";
unsigned char* pChrTAG = (unsigned char*)malloc(16);
memset(pChrTAG, 0, 16);
unsigned char* pChrKey = (unsigned char*)malloc(16);
memset(pChrKey, 1, 16);
if(aes_init() == RETURN_GOOD)
printf("AES Initialised!\r\n");
gcm_ctx ctx[1];
if(gcm_init_and_key(pChrKey, 16,
ctx) == RETURN_GOOD)
printf("GCM Initialised!\r\n");
//It crashes here
gcm_encrypt_message(pChrIV, 24,
pChrHeader, 16,
pChrMessage, strlen(pChrMessage),
pChrTAG, 16,
ctx);
if(gcm_end(ctx) == RETURN_GOOD)
printf("Ended!\r\n");
printf("Done!\r\n");
return(0);
我尝试更改Key和IV长度,但问题仍然存在。
我正在使用GCC C编译器在Ubuntu 10.4中用Eclipse编译它。
任何想法我可能做错了什么?非常感谢提前!
尼克。