gpt4 book ai didi

cryptography - openssl/crypto 中定义的 SHA256_Update() 在哪里?

转载 作者:行者123 更新时间:2023-12-05 00:00:37 27 4
gpt4 key购买 nike

我知道 SHA256_Update() 是在 openssl 下的 libcrypto 中实现的,但是,一个简单的 grep 找不到它的定义:

$ ack SHA256_Update
fips/fips_standalone_sha1.c
76: SHA256_Update(md_ctx,key,len);
87: SHA256_Update(md_ctx,pad,SHA256_CBLOCK);
92: SHA256_Update(o_ctx,pad,SHA256_CBLOCK);
100: SHA256_Update(o_ctx,buf,sizeof buf);
154: SHA256_Update(&md_ctx,buf,l);

evp/m_sha1.c
114: { return SHA256_Update(ctx->md_data,data,count); }

sha/sha256.c
58: SHA256_Update(&c,d,n);
71: SHA256_Update(&c,d,n);
78:{ return SHA256_Update (c,data,len); }
116:#define HASH_UPDATE SHA256_Update

所有这些实例都是函数被调用的地方,但不是它的定义。但是,如果我执行“nm libcrypto.so |grep SHA256_Update”,则可以找到该条目。

奇怪的...

任何人都可以在这里有所启发?

最佳答案

md32_common.h 是 C 的“穷人模板”。
它定义了任何散列算法的通用更新函数的结构。每个算法都为这个通用结构提供了名称。

所以在 md32_common.h 你会发现这个:

int HASH_UPDATE (HASH_CTX *c, const void *data_, size_t len)

在 sha/sha256.c 你会发现:
#define HASH_UPDATE             SHA256_Update

因此,当包含 md32_common.h 时,您将获得定义的 SHA256_Update 函数。

在 md32_common.h 的开头,你会找到一个更完整的解释和一个例子。

关于cryptography - openssl/crypto 中定义的 SHA256_Update() 在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9879903/

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