3

我正在使用 musl:https ://www.musl-libc.org

如果我浏览存储库,我可以看到有一堆与 crypt 相关的源文件(包括 crypt_sha256.c)。

图片

问题是它们没有头文件。我应该如何使用它们?

这些是我系统上库中的符号:

sha256_sum

我也无法从谷歌找到任何代码示例如何使用 musl 的 SHA-256 功能。

谢谢!

4

3 回答 3

3

crypt这不是通用的 SHA-256 消息摘要算法,而是(3)密码散列函数使用的特定算法。有关如何使用该功能,请参阅该功能的文档。

于 2020-01-24T10:52:43.783 回答
3

你是对的,这三个功能

  • sha256_init()
  • sha256_update()
  • sha256_sum()

确实是通用的SHA256 哈希函数。

不幸的是,这些符号并未公开导出,而仅在内部用于生成形式为的加盐密码哈希$5$0rXgD0/KkyyT0$5PPj3bke0vPxsMDlSXzBz2D3TFNahLrXSs7.elU3u2/

因此,没有提供使用这些函数的公共头文件。crypt_sha256()仅导出更高级别的函数。

为什么他们决定不导出通用接口只能推测,至少我找不到解释。

于 2020-01-24T11:52:59.950 回答
3

正如 Ctx 所写并评论说不知道原因,这些函数没有被导出。我可以填写那个理由。

一般来说,musl 不会单方面发明新的接口,这些新接口几乎肯定会以微妙的方式与其他 libc 提供者最终发明的类似接口有所不同。我们正在启动一个不像 POSIX 标准化过程那样正式的跨 libc 协作组,这可能使将来提供一些这样的接口变得合理,并且最终可能会将上游出现的一些共识汇集到 POSIX 中。

除此之外,欢迎任何想要使用这些实现的人复制代码并根据许可条款使用它。它们体积小、独立且许可许可,通过这种方式使用它们,您不会锁定任何外部接口边界的签名。但是,与加密代码一样,您应该小心旁道泄露秘密的任何风险。正如在 musl 中使用的那样,我不认为这是一个问题,但我没有分析其他可能的用途,选择专为任意加密设置设计的实现可能更安全。

于 2020-01-24T14:19:50.327 回答