2013-04-21 69 views
1

我有一臺服務器向我發送一條加密的消息。
此消息使用服務器的私鑰進行加密,我試圖使用公鑰對其解密。
驗證方法不符合我的需要,因爲它返回true或false。用公鑰解密,openssl_public_decrypt像

我發現OpenSSL有一個名爲openssl_public_decrypt的方法。
我試圖使用OpenSSL .Net包裝,並沒有設法讓它工作。

所以我在這裏問是否有另一個庫可以使用公鑰解密並返回解密的消息,如OpenSSL的一個?

在此先感謝!

+0

這聽起來像是一些臨時嘗試使用RSA進行恢復消息簽名。你說「它沒有用」,但你沒有提供任何細節。例如,您是否在使用「無填充」選項? – 2013-04-21 20:58:15

+0

我剛纔說我沒有設法讓它工作。有2個DLL添加到工作目錄或路徑,我嘗試了兩個沒有任何結果。我無法加載庫,依賴關係丟失。即使我可以使它工作,也有太多限制(必須安裝Microsoft Visual C++ 2010 Redistributable Package,兩個DLL必須連接到可執行文件等)。 – 2013-04-21 22:01:50

+0

@ Moonlight-Angel - 在我自己處理這個問題之後,我發現將php(整個庫)簡單地編譯到我的應用程序中更簡單,只需運行WORKING命令以使用私鑰編碼的數據的公鑰解密 - ---不要被99%的在線欺騙,私鑰意味着加密並保留在鎖/密鑰下,而公共讀取數據,但不能重新創建/僞造使用私鑰的加密。 – 2015-05-14 01:53:02

回答

0

,如果你想自己做密碼,你可能想看看這裏 https://stackoverflow.com/a/15706744/706119

我寫了另一個問題,但你也許可以用它在你的情況下

這是一個小使用Bigint實現RSA ...你必須自己處理填充,但是你可以用這種方法解密......

+0

感謝您的回答,填充是PKCS#1。所以,如果我理解正確,方法rsaOperation是加密和解密?並且「strip PKCS#1_V1.5填充」註釋足以處理解密後的填充?如果是這樣,非常感謝你:)。 – 2013-04-21 20:59:35

+0

@ Moonlight-Angel ...你對rsaOperation函數是正確的...關於填充,我沒有真正閱讀規範,所以在這裏沒有保證,但它適用於100個隨機數據加密的測試用例。 net rsacryptoserviceprovider類,並用該代碼解密... – DarkSquirrel42 2013-04-24 00:09:30

+0

它的作用就像一個魅力,填充了。非常感謝 ! – 2013-04-24 11:31:15

0

私鑰通常用於解密,但在您描述的情況下,使用另一種方法。服務器使用私鑰解密數據,然後將其發送到客戶端。這樣,當客戶端用公鑰加密接收到的消息時,它獲得原始數據。

如果你正在開發服務器和客戶端,你應該嘗試這種方法。如果服務器屬於其他人,他們可能已經使用它了。

至於實現,你可以嘗試內置.Net類不對稱加密。假設服務器使用RSA算法進行加密,則可以使用RSACryptoServiceProvider類。

+0

正如你所說,服務器屬於其他人,他們不這樣做肯定。 – 2013-04-21 19:54:48