我正在查看 libsodium-examples of public-key-cryptography ,似乎在加密明文时,除了接收者的公钥之外,还使用了发送者的私钥。
从相关示例中提取:
crypto_box_easy() 函数使用接收者的公钥 pk、发送者的密钥 sk 和随机数 n 加密长度为 mlen 字节的消息 m。
这有什么意义?我的理解是发件人的私钥仅在签署消息时使用?
我正在查看 libsodium-examples of public-key-cryptography ,似乎在加密明文时,除了接收者的公钥之外,还使用了发送者的私钥。
从相关示例中提取:
crypto_box_easy() 函数使用接收者的公钥 pk、发送者的密钥 sk 和随机数 n 加密长度为 mlen 字节的消息 m。
这有什么意义?我的理解是发件人的私钥仅在签署消息时使用?
libsodium 文档引用了一个“身份验证标签”,该标签在下一节的不同章节中进行了解释:
This operation:
* Encrypts a message with a key and a nonce to keep it confidential.
* Computes an authentication tag. This tag is used to make sure that
the message hasn't been tampered with before decrypting it.
所以 libsodium 所称的身份验证标签等价于更常见的对消息进行签名的术语。crypto_box_easy(...)
因此,该函数将发送者的私钥作为输入是有意义的,因为加密实际上是加密和签名。
数字签名用私钥加密,用公钥解密。这允许任何人使用签名者的公钥验证签名。