2016-06-30 33 views
0

我正在通过libsodium-公用密钥密码术的实例进行研究,并且在加密明文时,似乎除了接收者公钥之外,还使用了发送者私钥。从相关example为什么发件人在加密中使用私钥?

提取物:

的crypto_box_easy()函数加密消息m的长度为 MLEN字节,用接收者的公钥pk,一个发送者的秘密密钥sk 和现时值。

这是什么意思?我的理解是发件人私钥只在签署邮件时使用过?

+0

好吧,我想我对公钥密码学的把握是缺乏的。我会做一些阅读... – PureW

+0

@zaph但是为什么在使用发件人私钥的例子中加密代码为“crypto_box_easy()”? – PureW

+0

你将不得不知道用例。 – zaph

回答

0

的libsodium文档是指“认证标签”,这是一个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调用认证标签等同于签约的消息更常见的术语。因此,crypto_box_easy(...)函数将发件人私钥作为输入是有意义的,因为加密确实是加密和签名。

0

数字签名使用私钥进行加密并使用公钥进行解密。这允许任何人用签名者的公钥来验证签名。

+0

是的,但我的问题是关于加密步骤。在参考的例子中,发送者的私钥用于将明文加密为密文。 – PureW

+0

这可以做,但它不应该除了代码签名。由于公钥一般是公开的,这意味着任何拥有公钥的人(基本上每个人)都可以解密用私钥加密的任何内容,因此这里没有安全性。但是在可能需要的地方有一些非常有限的用例。 – zaph

相关问题