gpt4 book ai didi

c - 使用带有 EVP 接口(interface)的 AES/GCM 的段错误

转载 作者:行者123 更新时间:2023-11-30 19:33:07 26 4
gpt4 key购买 nike

我找到了一些演示( wikigithub ),但它们不起作用。运行我编写的代码(引用上面链接中的代码)得到段错误(核心转储)

int main(int argc, char *argv[]){
char *ciphertext;
char *key;
char *iv;
char *plaintext;

key = "AES256-GCM-KEY-1234567890abcdefg";
iv = "8a9cef0205a3";
ciphertext = "uatBMo8k7EAnDQuNK4CHASJerQZpCWv86PGditzdYnQV9uqotQ==";
plaintext = "";

decrypt(ciphertext, NULL, 0, NULL, key, iv, plaintext);
return 0;
}

int decrypt(unsigned char *ciphertext, unsigned char *aad, int aad_len, unsigned char *tag, unsigned char *key, unsigned char *iv, unsigned char *plaintext){
EVP_CIPHER_CTX *ctx;
int len, ret;
ctx = EVP_CIPHER_CTX_new();
EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_GCM_SET_IVLEN,strlen(iv),NULL);
EVP_DecryptInit_ex(ctx, NULL, NULL, key, iv);
EVP_DecryptUpdate(ctx,plaintext, &len, ciphertext, strlen(ciphertext));//"segmentation fault"
ret = EVP_DecryptFinal_ex(ctx, plaintext, &len);
EVP_CIPHER_CTX_free(ctx);
printf(ret > 0 ? "success!\n" : "failed!\n");
return 0;
}

我很困惑,如何使用这个api在不验证的情况下解密?

最佳答案

您需要为指针分配内存(全部)

key = malloc(sizeof(*key) * strlen("AES256-GCM-KEY-1234567890abcdefg") + 1);

你应该使用这些标志编译你的main(如果gcc是编译器):-W -Wall -Wextra它会告诉你你的指针尚未初始化

关于c - 使用带有 EVP 接口(interface)的 AES/GCM 的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46292632/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com