我们实现了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/