KeyAgreement.generateSecret(String algorithm)有什么方法?

时间:2010-08-17 13:39:53

标签: java security encryption

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

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密钥?

2 个答案:

答案 0 :(得分:4)

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

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

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

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

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

答案 1 :(得分:0)

此方法只是截断generatedSecret()。