什么metod KeyAgreement.generateSecret(String algorithm)呢?

我们实现了Diffie-Hellman密钥交换算法:

KeyAgreement aKeyAgree = KeyAgreement.getInstance("DH"); keyAgreement.init(myPrivateKey); keyAgreement.doPhase(otherPublicKey) 

现在我们需要生成一个用于AES加密的秘密。 有方法generateSecret(String algorithm) 。 我想我应该用'AES'说法来称呼它。

但对于DH,我使用512位长度的公钥,所以秘密也应该是512位长度。 但AES允许256位长度的密钥作为最大值。 没有参数的plain方法generateSecret()返回512位DH密钥。 但是generateSecret(String)呢? 它如何将512位密钥转换为256/128位AES密钥?

Diffie-Hellman是一个关键的协议协议; AES是一种对称加密算法。

无参数generateSecret()调用提供密钥协商算法的默认大小的密钥。 将算法名称传递给generateSecret将为您提供一个具有适当算法大小的密钥(即AES缩短为256位)。

我找到了一个显示示例的页面。

http://www.exampledepot.com/egs/javax.crypto/KeyAgree.html

我希望您可以在示例中将“DES”替换为“AES”或您想要使用的任何对称密钥算法。

此方法只是截断generatedSecret()。