我使用的是musl:https://www.musl-libc.org
如果我浏览存储库,我可以看到有一堆与密码相关的源文件(包括crypt_sha256.c)。

问题是它们没有头文件。我该怎么用呢?
这些是我系统中库中的符号:

我也找不到谷歌的任何代码样本,如何使用musl的SHA-256特性。
谢谢!
发布于 2020-01-24 11:52:59
你是对的,这三个功能
确实是泛型SHA256哈希函数。
不幸的是,这些符号不是公开导出的,而是仅在内部用于生成表单$5$0rXgD0/KkyyT0$5PPj3bke0vPxsMDlSXzBz2D3TFNahLrXSs7.elU3u2/的盐析密码散列。
因此,不提供使用这些函数的公共头文件。只导出高级函数crypt_sha256() .
为什么他们决定不导出通用接口只能猜测,至少我找不到一个解释。
发布于 2020-01-24 10:52:43
这不是一般的SHA-256消息摘要算法,而是crypt(3)密码哈希函数使用的特定算法。请参阅关于如何使用该函数的文档。
发布于 2020-01-24 14:19:50
正如Ctx所写的和评论说不知道原因,这些函数是不导出的。我可以填写这个理由。
一般来说,musl不会单方面发明新的接口,这些接口几乎肯定会以微妙的方式与其他libc提供程序最终发明的类似接口不同。我们正在启动一个跨libc协作小组,该小组不像POSIX标准化进程那么正式,这可能使将来提供这样一些接口是合理的,而且这可能最终会导致出现在POSIX上游的一些共识。
除此之外,任何想要使用这些实现的人都可以根据许可条款复制代码并使用它。它们是小型的、独立的、许可许可的,通过这种方式使用它们,您不会锁定任何外部接口边界的签名。但是,与通常的密码一样,您应该小心侧通道泄漏机密的风险。在musl中使用时,我不认为这是一个问题,但我还没有分析其他可能的用途,选择一个设计用于任意加密设置的实现可能更安全。
https://stackoverflow.com/questions/59894931
复制相似问题