我們實施的Diffie-Hellman密鑰交換算法:什麼metod KeyAgreement.generateSecret(String algorithm)呢?
KeyAgreement aKeyAgree = KeyAgreement.getInstance("DH");
keyAgreement.init(myPrivateKey);
keyAgreement.doPhase(otherPublicKey)
現在,我們需要生成一個祕密使用AES加密。有方法generateSecret(String algorithm)
。我想我應該用'AES'
的說法來調用它。
但是對於DH我使用512位長度的公鑰,所以密鑰也應該是512位長度。但是,AES允許最多256位長度的密鑰。無參數的普通方法generateSecret()
返回512位DH祕密。但是generateSecret(String)
呢?它如何將512位密鑰轉換爲256/128位AES密鑰?
DH需要大約與RSA密鑰一樣長的密鑰。因此使用長度至少爲1024位的密鑰。從生成的DH祕密通過使用散列函數(例如SHA-256)生成AES密鑰。 – abc 2010-08-18 14:05:07