Dot-Net

是否可以使用.net RSACryptoServiceProvider 使用私鑰加密?

  • July 25, 2009

我知道 RSACryptoServiceProvider 可以用公鑰加密,然後可以用私鑰解密。

是否可以使用 RSACryptoServiceProvider 使用私鑰加密並使用公鑰解密?

不,這不是任何公鑰/私鑰加密的工作方式。只能用公鑰加密,只能用私鑰解密。

如果您想將私鑰應用於消息,也許您正在尋找簽名,而不是加密?這是一種不同的加密方案,也可以使用 RSA 密鑰。

只是為了澄清一點:

RSA 可用於加密(確保 Eve 無法讀取 Alice 發送給 Bob 的消息)或簽名(確保如果 Alice 向 Bob 發送消息,Bob 知道發送消息的實際上是 Alice,而不是 Eve 假裝成為愛麗絲)

RSA 生成一對密鑰——一個公鑰和一個私鑰。RSA 的設計目的是,如果您應用公鑰然後再應用私鑰,反之亦然,您將得到相同的消息。而公鑰可以從私鑰推導出來,反之則不行。

為了使用 RSA 進行加密,Alice 使用 Bob 的公鑰對消息進行加密。閱讀此消息的唯一方法是使用 Bob 的私鑰,該私鑰只有他擁有。因此 Eve 無法閱讀該消息,因為他沒有這把鑰匙。另一方面,這不提供消息來源的身份驗證。Eve 還可以獲取 Bob 的公鑰(因為它是公開的)並向 Bob 發送消息,假裝是 Alice。

為了使用 RSA 進行簽名,Alice 獲取消息的散列,使用她自己的私鑰加密散列,並將結果(這是簽名)附加到消息中。當然,Eve 仍然可以使用 Alice 的公鑰對其進行解密。但是,Bob 可以使用 Alice 的公鑰解密簽名並查看它是否匹配。如果是這樣,它一定是用愛麗絲的私鑰加密的,只有她有,所以它一定來自愛麗絲。


現在,我不熟悉 .NET 加密 API,所以我不確定它是否完全按照這裡的描述工作。但是這個解釋可能會幫助你理解你得到的一些答案。

引用自:https://stackoverflow.com/questions/1181421