我使用BouncyCastle API实现了Elliptic Curve Diffie Hellman加密。但是,似乎这个关键协议没有正常工作。它打印错误。BouncyCastle ECDH密钥协议失败
我在哪里做错了?谢谢。
ECParameterSpec ecSpec = ECNamedCurveTable.getParameterSpec("B-571");
KeyPairGenerator g = KeyPairGenerator.getInstance("ECDH", "BC");
g.initialize(ecSpec, new SecureRandom());
KeyPair aKeyPair = g.generateKeyPair();
KeyAgreement aKeyAgree = KeyAgreement.getInstance("ECDH", "BC");
aKeyAgree.init(aKeyPair.getPrivate());
KeyPair bKeyPair = g.generateKeyPair();
KeyAgreement bKeyAgree = KeyAgreement.getInstance("ECDH", "BC");
bKeyAgree.init(bKeyPair.getPrivate());
//
// agreement
//
aKeyAgree.doPhase(bKeyPair.getPublic(), true);
bKeyAgree.doPhase(aKeyPair.getPublic(), true);
byte[] aSecret = aKeyAgree.generateSecret();
byte[] bSecret = bKeyAgree.generateSecret();
System.out.println(aSecret);
System.out.println(bSecret);
if (aSecret.equals(bSecret)){
return true;
} else { return false; }