2011-09-22 70 views
1

我正在尋找示例Java代碼來實現ECDH加密密碼。我已經找到了獲取所需密鑰的方法,但仍未找到加密文本的解決方案。感謝任何人都可以提供一些指導。如何使用ECDH密碼明文?

btw我正在使用SpongyCastle,因爲我正在爲Android編程。

非常感謝!

+1

ECDH通常用於密鑰協議,而不是實際加密的東西。由於各種原因,您會希望使用對稱密碼(如AES),速度就是一個。 – user771921

+0

我嘗試使用AES,但我不斷收到此錯誤java.security.InvalidKeyException密鑰長度不是128/192/256。 – Caulibeam

+0

8血淋淋細節在[NIST SP 800-56A](http://csrc.nist.gov/publications/nistpubs/800-56A/SP800-56A_Revision1_Mar08-2007.pdf)。特別看5.8.1節和6.1.2節。 –

回答

3

ECDH不是加密算法;它不能加密你選擇的一些數據。它是一個key agreement協議,它產生一個「共享密鑰」:發送者和接收者最終共享的數據是「祕密的」(只有他​​們知道),但他們無法控制其內容。

這個想法是,您可以使用共享密鑰作爲對稱加密算法的基礎。由於共享祕密具有相對不靈活的格式(使用ECDH,共享祕密是一個橢圓曲線點,其中大約一半是真正的祕密),通常的方法是使用安全散列函數對它進行散列(例如SHA -256),並使用散列輸出(或其一部分)作爲實際加密密鑰。