访问 NaCl/libsodium 中的 MAC 个键

Access MAC keys in NaCl/libsodium

根据 https://cr.yp.to/highspeed/naclcrypto-20090310.pdf,NaCl 从共享密钥和 crypto_box API 中的随机数派生出 MAC 密钥。

Alice uses the first 32 bytes of the long stream (generated from the shared secret and nonce using salsa20) to compute an authenticator of the encrypted packet.

但是,此过程是内部过程。请问有没有API手动导出MAC密钥?

box 构造使用 xsalsa20 密码(最初 -- 还有一个使用 xchacha20 的变体)。

该密码的第一块用作 Poly1305 密钥。剩余的块与消息进行异或以计算密文。

因此,您可以简单地使用 crypto_stream() 来计算 Poly1305 密钥。