2012-05-31 184 views
2

我有一個客戶令牌,我從一個web應用發送app1到另一個web應用說app2。我想在app1加密客戶令牌 ,並使用在app1和app2共享的密鑰在app2解密。我沒有得到如何從這開始?這將是非常有用的,如果有人可以指向我的一些示例代碼或一些使用共享密鑰的tutotrial,因爲太多的加密/解密的東西(如對稱密鑰,公共密鑰)在網絡上真的讓我困惑。另一個限制是我真的很短的時間這個細節。提前致謝。在java中使用共享密鑰進行加密/解密?

編輯: -我正在尋找簡單的程序,就像在http://sanjaal.com/java/186/java-encryption/tutorial-java-des-encryption-and-decryption/給出,但使用AES?無法使用共享密鑰在AES中找到這種示例?

+0

這裏有一個很好的例子:http://stackoverflow.com/questions/992019/java-256-bit-aes-password-based-encryption –

+0

我想看看對稱,認證加密。 – CodesInChaos

+0

@EmmanuelBourg我不確定OP將如何使用它,但很可能您的建議容易受到主動攻擊(如填充oracle)的攻擊。這也是基於密碼的加密,OP沒有理由使用密碼而不是簡單的密鑰。 – CodesInChaos

回答

0

我建議這樣的:

分配了公鑰/私鑰對你的每個應用程序和存儲在一個祕密密鑰密碼安全地保護私鑰。確保這是非常安全的。毋庸置疑,公共證書(包含公鑰)也將公開。
每個應用程序將擁有所有其他應用程序的公鑰證書。現在,當有一個應用程序想與其他應用程序通信時,

第一個sign(基本上是加密)令牌與發送應用程序的私鑰。
然後使用要將數據發送到的應用程序的公鑰對結果值進行加密。

通過這種方式,接收此值的應用程序可以確保中間沒有人能夠確定您發送的內容,並驗證令牌是否來自可信實體。
但是,如果您使用共享密鑰(對稱密鑰),那麼如果對稱密鑰遭到破壞,則所有應用都將受到攻擊。

-1

通常情況下,您使用非對稱算法(例如RSA)來加密對稱密鑰(例如AES)以安全地與另一方分享,然後使用對稱密鑰對後續通信進行加密。這是非常基本的要點,但還有很多要考慮的因素。

我可以看到你自己現在進入非常大的麻煩現在有幾個原因。

  1. 你不知道密碼
  2. 的概念你都不願意詳細研究
  3. 只是想抓住從網上一些代碼,並使用它。
  4. 非常短的時間

我知道你可能沒有選擇,也許你的老闆/客戶想要得到這個迅速完成。但我完全建議你不要繼續前進,除非你知道你在做什麼。如果您正在處理諸如信用卡信息或其他重要客戶信息等敏感信息,請自己幫忙併深入研究密碼。

如果以不正確的方式使用密碼算法,密碼算法有多強大並不重要。所以你需要了解如何正確使用每種算法,以及它的優點/缺點。

+0

我看不出在這裏使用非對稱加密的理由。 – CodesInChaos

+0

@CodeInChaos:如果兩個Web應用程序都受其控制,則使用存儲在共享位置的對稱密鑰是有意義的。然後他可以每天/每週更換鑰匙。但我寧願爲每個通信會話生成一個密碼安全的隨機會話密鑰,並使用非對稱密碼術將其與其他應用程序安全地共享。或者他可以編寫一個應用程序來生成對稱密鑰並將其存儲在每週/每週的共享位置。我可能錯了。請友善地指出任何潛在的弱點:) –

+0

您可以生成一個隨機對稱密鑰,並在另一個更長期的對稱密鑰下共享它。本質上這是Kerberos的核心。 –

相關問題