我们实现了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密钥?

最佳答案

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

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

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

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

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

关于java - KeyAgreement.generateSecret(String algorithm)有什么方法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3503006/

10-08 21:35