2016-06-30 63 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

相關問題