如何将 SHA-256 加密与 musl 一起使用?

How to use SHA-256 crypt with musl?

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

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

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

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

我也找不到任何来自 google 如何使用 musl 的 SHA-256 功能的代码示例。

谢谢!

这不是通用的 SHA-256 消息摘要算法,而是 crypt(3) 密码哈希函数使用的特定算法。请参阅该函数的文档以了解其使用方法。

你说的对,就是三个函数

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

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

遗憾的是,这些符号不会导出 publically,而仅在内部用于生成 [=10=]rXgD0/KkyyT0PPj3bke0vPxsMDlSXzBz2D3TFNahLrXSs7.elU3u2/

形式的加盐密码哈希

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

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

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

通常,musl 不会单方面发明新的接口,这些接口几乎肯定最终会与其他 libc 提供商最终发明的类似接口在细微的方面有所不同。我们正在启动一个比 POSIX 标准化过程更不正式的跨 libc 协作组,这可能使将来提供一些这样的接口变得合理,并且最终可能会汇集出现的一些共识POSIX.

的上游

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