Diffie-Hellman 对称键显示问题

Diffie-Hellman symmetry keys display issue

我正在使用 bouncy castle Diffie-Hellman 密钥交换协议生成对称密钥,但是当我显示生成的 Secret 时,它会出现以下错误

java.lang.IllegalStateException: 密钥约定尚未完成

从下面的代码中假设密钥协商过程已成功完成,并且从哈希中它确认两个密钥是相似的。

    MessageDigest   hash = MessageDigest.getInstance("SHA1");
    byte[] aShared = hash.digest(aKeyAgree.generateSecret());
    byte[] bShared = hash.digest(bKeyAgree.generateSecret());
    System.out.println(Arrays.toString(aKeyAgree.generateSecret()));

可能只是调用 aKeyAgree.generateSecret() 两次是问题所在。密钥协议应该只执行一次。如果要打印结果,则需要将其存储在(临时)变量中。