我目前正在使用Diffie-Hellman進行密鑰交換的協議。 我收到一個數據包,它由一個aes-128加密部分和一個128位DH公鑰組成。用diffie-hellman共享密鑰繼續加密
在協議的最後一步,aes密鑰被髮送到網絡中的另一個對端。 這個aes-key應該使用128位強密鑰加密。
我計劃用河豚(也可以是其它密碼,其實並不重要的問題)
現在加密AES密鑰,用可以說河豚,我要建立一個與祕密密鑰加密一個名爲SecretKeySpec的類(我使用javax.crypto的東西),它在構造函數中需要一個byteArray來構建secretKey。
來自DH的共享密鑰是128位BigInteger。 好了,現在我可以解釋我的共享密鑰爲ByteArray(至極讓我在16字節[其中的數字將被解釋爲8個數據幀]還是128位)
所以我的問題是,如何強是我的關鍵真的嗎?
是否有任何影響,因爲我只使用數字作爲輸入的ByteArray(那麼,這是否限制密鑰空間以任何方式?)
我想,這是不是這樣的,但我不是100%確定。 也許有人可以做數學並證明我對或錯。
如果我錯了什麼密鑰的共享密鑰給我一塊心,最後得到128Bit SecretKey的加密?
請注意,使用Blowfish加密AES密鑰會降低協議對AES或Blowfish的_weakest_的強度。雖然AES發佈後發現了一些針對AES的攻擊,但我仍然對Blowfish進行了賭注[AES更強大](http://en.wikipedia.org/wiki/Advanced_Encryption_Standard#Known_attacks)(以及更好的檢查)。 – sarnold
@sarnold:謝謝你的提示,我知道這個問題。河豚只是一個例子,也許我也使用AES。我還不確定是否需要在這一步傳輸更多的信息,所以我計劃使用一個流式處理器來運行,以消除固定大小,迫使我使用(或填充我的數據)。我只限於一個以太網數據包,所以每個字節我都可以避免更好。 :) – evildead