要開始,你需要的私人密鑰解密消息。通過「公鑰(64位編碼)」,我猜你真正擁有的是Base-64 –編碼證書,標題行中寫着「----- BEGIN CERTIFICATE -----」和一個頁腳上寫着「----- END CERTIFICATE -----」。
如果這是正確的,您需要找到私鑰。這有時存儲在PKCS#12格式文件中,擴展名爲「.p12」或「.pfx」。如果存儲在這樣的文件中,則需要密碼才能訪問私鑰。
或者,OpenSSL和其他實用程序使用的私鑰文件可以是Base-64編碼或二進制。這些有各種擴展名,可能有或沒有密碼保護。如果您擁有的文件的標題行爲「----- BEGIN RSA PRIVATE KEY -----」或「----- BEGIN PRIVATE KEY -----」,那實際上是私鑰。
最後,Windows可以將私鑰存儲在其內部密鑰存儲中。
當您澄清私鑰的位置時,請更新您的問題。
如果在Java端使用私鑰,它可能是嘗試執行數字簽名。雖然我所測試的所有幾個Java提供程序在以這種方式使用(ab)時會產生正確的結果,但如果您正在執行簽名,則應使用Signature
類。 C#代碼也應該使用簽名對象來「驗證」簽名。
使用私鑰執行加密。由於公鑰公鑰密鑰爲public,任何人都可以解密該消息;即該消息不是機密的。公用密鑰由收件人用來驗證簽名的消息。
請看我的答案更新。 – erickson 2009-10-20 19:18:10