c - SHA256 使用 Openssl 导致段错误

标签 c hash segmentation-fault

我正在尝试使用 AES 加密文件,并基于前向保密原则计算新的加密 key ,即旧 key 的哈希值。所以我正在使用哈希函数 SHA256 的 openssl 实现。 首先,我想用这个简单的代码来测试它的可行性:

#include <stdio.h>
#include <string.h>
#include <openssl/sha.h>

 int main()
 {
     unsigned char *key =(unsigned char *)"01234567890123456789012345678901";
     SHA256(key, strlen(key), key);
     return 0;
  }

但是发生了段错误,可能是什么原因?

最佳答案

您的字符串文字被放置在只读内存中,当 openssl 尝试写入它时,您的程序会出现段错误。

在语言方面,尝试修改字符串文字会导致未定义的行为。

为输入键创建缓冲区或为输出创建新缓冲区。

关于c - SHA256 使用 Openssl 导致段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42141133/

相关文章:

c - 访问字符数组时出现段错误

谁能帮我理解这个 strchr() C 段错误?

c - 读取数据并将其输入到二维字符数组,以及 printf。在c中

c - 如果二进制搜索数字不在索引中,如何返回 NULL?

c - 带指针的 typedef 声明

perl - 为什么 Perl 的 each() 不第二次遍历整个散列?

performance - 当存储在磁盘上时,为什么尝试比哈希表慢?

c - 具有连接文件描述符的 pthread 竞争条件

objective-c - Apple 的 BetterAuthorizationSample 在 10.6.6 上不起作用

hash - 可变 HashMap 键是一种危险的做法吗?