为什么发件人私钥用于加密?
Why is senders private key used in encryption?
我正在查看 public-key-cryptography 的 libsodium-examples,似乎在加密明文时除了接收方 public 密钥外还使用了发送方私钥。
摘自相关example:
The crypto_box_easy() function encrypts a message m whose length is
mlen bytes, with a recipient's public key pk, a sender's secret key sk
and a nonce n.
这是什么意思?我的理解是发件人私钥仅在签署消息时使用?
数字签名用私钥加密,用public密钥解密。这允许任何人使用签名者的 public 密钥验证签名。
libsodium 文档引用了 "authentication tag",在以下部分的 different chapter 中进行了解释:
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所说的authentication tag就相当于更通俗的消息签名术语。因此,crypto_box_easy(...)
函数将发送方私钥作为输入是有意义的,因为加密实际上是加密和签名。
我正在查看 public-key-cryptography 的 libsodium-examples,似乎在加密明文时除了接收方 public 密钥外还使用了发送方私钥。
摘自相关example:
The crypto_box_easy() function encrypts a message m whose length is mlen bytes, with a recipient's public key pk, a sender's secret key sk and a nonce n.
这是什么意思?我的理解是发件人私钥仅在签署消息时使用?
数字签名用私钥加密,用public密钥解密。这允许任何人使用签名者的 public 密钥验证签名。
libsodium 文档引用了 "authentication tag",在以下部分的 different chapter 中进行了解释:
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所说的authentication tag就相当于更通俗的消息签名术语。因此,crypto_box_easy(...)
函数将发送方私钥作为输入是有意义的,因为加密实际上是加密和签名。