2012-05-20 114 views
0

我用java rmi客戶端服務器做了一個聊天應用程序。爲了我的消息使用RSA算法的安全性,但我很難將私鑰分發到對手的聊天中。也許從我的朋友那裏可以幫助如何將私鑰分發給對手,以便他可以解密發送的聊天消息。私鑰分配技術?

+5

爲什麼你想要在那裏分發私鑰?整個想法是保留私鑰,好吧*私人* – Voo

+1

確實。您應該使用朋友的_public_鍵加密傳出消息,因此只有他們可以用其私鑰解密。 –

+0

他談論* a *私鑰。不是他或他的朋友。這意味着他意味着一個對稱密鑰。 –

回答

0

你需要使用的是一個不對稱的方案來傳輸信息。使用非對稱加密,即使有人在收聽,他們也不知道他們的關鍵是什麼。你可以使用它加密消息,但是通常你可以用它來加密一個對稱密鑰,然後從那裏使用它。

有關背景的更多信息,請參閱this

至於如何在你的代碼中做到這一點,我會建議googling沿着「java公鑰庫」的東西。

+1

自從他談論私鑰以來,他已經在使用不對稱方案。他甚至將RSA作爲標籤。 – Voo

+0

@Voo,僅僅因爲使用了標籤和名稱,這並不意味着他理解了這些想法?如果他做了這個問題就沒有必要了? –

+0

如果這是郵政罰款的目的。當他已經使用RSA時,開始使用「需要使用不對稱方案」的帖子,可能會讓海報和其他讀者感到困惑; – Voo

3

首先你永遠不會分配私鑰,而公鑰可以公開(duh!)可用。您使用聊天第二方的人員的公共密鑰加密您的消息,然後他們使用他們的私鑰對其進行解密。您可以使用純文本,電子郵件或公佈您的公共密鑰,以便其他人可以使用它加密他們的郵件。

爲了讓您的生活更輕鬆地投入使用 - 由於使用非對稱加密建立安全通道後,它會更快地交換對稱會話密鑰並使用更快的對稱加密。

實際上,分配公鑰也可能是一個問題。如果你的對手也可以修改傳輸(而不是隻聽你的傳輸通道),他/她可以發送你的僞造公鑰。這就是爲什麼公鑰(例如在網站上)需要由可信任權限鏈(其公鑰在Web瀏覽器中被硬編碼)簽名的原因。

+0

公鑰需要被信任,但可信任的機構只是實現該目標的一種方式(信任網,帶外通信等)。 –

0

RSA是一種公鑰加密技術,您的客戶擁有一個公鑰,並且您擁有一個私鑰,使用該私鑰對郵件進行解密,即使用客戶端公鑰對郵件進行加密並使用您的私鑰進行解密。 你可以檢查一下http://www.di-mgt.com.au/rsa_alg.html 它非常詳細地解釋它是如何工作的。 這個PPT解釋了它如何在java中實現 www.cs.cityu.edu.hk/~cs4288/Java/RSA.doc 它真的很有幫助。

希望它有幫助!