我正在使用 musl:https ://www.musl-libc.org
如果我浏览存储库,我可以看到有一堆与 crypt 相关的源文件(包括 crypt_sha256.c)。
问题是它们没有头文件。我应该如何使用它们?
这些是我系统上库中的符号:
我也无法从谷歌找到任何代码示例如何使用 musl 的 SHA-256 功能。
谢谢!
我正在使用 musl:https ://www.musl-libc.org
如果我浏览存储库,我可以看到有一堆与 crypt 相关的源文件(包括 crypt_sha256.c)。
问题是它们没有头文件。我应该如何使用它们?
这些是我系统上库中的符号:
我也无法从谷歌找到任何代码示例如何使用 musl 的 SHA-256 功能。
谢谢!
crypt
这不是通用的 SHA-256 消息摘要算法,而是(3)密码散列函数使用的特定算法。有关如何使用该功能,请参阅该功能的文档。
你是对的,这三个功能
确实是通用的SHA256 哈希函数。
不幸的是,这些符号并未公开导出,而仅在内部用于生成形式为的加盐密码哈希$5$0rXgD0/KkyyT0$5PPj3bke0vPxsMDlSXzBz2D3TFNahLrXSs7.elU3u2/
因此,没有提供使用这些函数的公共头文件。crypt_sha256()
仅导出更高级别的函数。
为什么他们决定不导出通用接口只能推测,至少我找不到解释。
正如 Ctx 所写并评论说不知道原因,这些函数没有被导出。我可以填写那个理由。
一般来说,musl 不会单方面发明新的接口,这些新接口几乎肯定会以微妙的方式与其他 libc 提供者最终发明的类似接口有所不同。我们正在启动一个不像 POSIX 标准化过程那样正式的跨 libc 协作组,这可能使将来提供一些这样的接口变得合理,并且最终可能会将上游出现的一些共识汇集到 POSIX 中。
除此之外,欢迎任何想要使用这些实现的人复制代码并根据许可条款使用它。它们体积小、独立且许可许可,通过这种方式使用它们,您不会锁定任何外部接口边界的签名。但是,与加密代码一样,您应该小心旁道泄露秘密的任何风险。正如在 musl 中使用的那样,我不认为这是一个问题,但我没有分析其他可能的用途,选择专为任意加密设置设计的实现可能更安全。