如何在源代码中查找函数
how find function in source
在研究如何最好地利用 OpenSSH 时,我研究了 SHA 散列并发现 a post discussing the SHA2 functions in OpenSSL. 已接受的答案指出
SHA-224 and SHA-256 are the same function, save for an internal parameter
我确定这是真的,但是,我想亲自看看。只是为了让我知道它的样子。具体来说,我想看看执行 SHA-224 和 SHA-256 哈希的函数。
顺便说一句,这个问题对我来说很重要,因为我参加了一些编程(C 和 perl)课程的介绍,这些课程总是让我感觉像 "OK, so what? How does this do something useful"。也许通过四处探索,我会看到有用的代码是什么样子的,了解一下开源软件的组织方式,并朝着自己贡献一些有用的东西迈出一小步。
所以我下载了the OpenSSL source code (openssl-1.0.2e.tar.gz),解压后想到"Wow, where do I start?"
那么,嗯,我从哪里开始呢?有很多文件和目录。东西放在哪里有约定吗?是否有我应该安装的开发环境有助于看到更大的图景?如果能帮助我朝着正确的方向开始,我们将不胜感激。
Google 是一个好的开始。有用的关键词:
openssl sha256
第二个结果将您带到头文件 openssl/sha.h
,您可以在其中找到代码中函数的调用方式:
int SHA224_Init(SHA256_CTX *c);
int SHA224_Update(SHA256_CTX *c, const void *data, size_t len);
int SHA224_Final(unsigned char *md, SHA256_CTX *c);
unsigned char *SHA224(const unsigned char *d, size_t n,
unsigned char *md);
int SHA256_Init(SHA256_CTX *c);
int SHA256_Update(SHA256_CTX *c, const void *data, size_t len);
int SHA256_Final(unsigned char *md, SHA256_CTX *c);
unsigned char *SHA256(const unsigned char *d, size_t n,
unsigned char *md);
然后克隆 openssl git 并通过它进行 grep,例如 github should be enough. Now, keyword SHA256_Init
. And hooray, the implementation is here in
openssl/crypto/sha/sha256.c
在研究如何最好地利用 OpenSSH 时,我研究了 SHA 散列并发现 a post discussing the SHA2 functions in OpenSSL. 已接受的答案指出
SHA-224 and SHA-256 are the same function, save for an internal parameter
我确定这是真的,但是,我想亲自看看。只是为了让我知道它的样子。具体来说,我想看看执行 SHA-224 和 SHA-256 哈希的函数。
顺便说一句,这个问题对我来说很重要,因为我参加了一些编程(C 和 perl)课程的介绍,这些课程总是让我感觉像 "OK, so what? How does this do something useful"。也许通过四处探索,我会看到有用的代码是什么样子的,了解一下开源软件的组织方式,并朝着自己贡献一些有用的东西迈出一小步。
所以我下载了the OpenSSL source code (openssl-1.0.2e.tar.gz),解压后想到"Wow, where do I start?"
那么,嗯,我从哪里开始呢?有很多文件和目录。东西放在哪里有约定吗?是否有我应该安装的开发环境有助于看到更大的图景?如果能帮助我朝着正确的方向开始,我们将不胜感激。
Google 是一个好的开始。有用的关键词:
openssl sha256
第二个结果将您带到头文件 openssl/sha.h
,您可以在其中找到代码中函数的调用方式:
int SHA224_Init(SHA256_CTX *c);
int SHA224_Update(SHA256_CTX *c, const void *data, size_t len);
int SHA224_Final(unsigned char *md, SHA256_CTX *c);
unsigned char *SHA224(const unsigned char *d, size_t n,
unsigned char *md);
int SHA256_Init(SHA256_CTX *c);
int SHA256_Update(SHA256_CTX *c, const void *data, size_t len);
int SHA256_Final(unsigned char *md, SHA256_CTX *c);
unsigned char *SHA256(const unsigned char *d, size_t n,
unsigned char *md);
然后克隆 openssl git 并通过它进行 grep,例如 github should be enough. Now, keyword SHA256_Init
. And hooray, the implementation is here in
openssl/crypto/sha/sha256.c