0
虽然我已经下载了无限的JCE策略并且已经添加了lib bcprov,但我在Android中有这个例外。此外,我添加了该行:java.security.NoSuchAlgorithmException:没有这样的算法:提供商BC的ECDH
请帮助我了解缺少的内容。我阅读其他帖子,发现他们已经完成了上述内容。该应用程序崩溃的loadprivatekey,在该行:
ECParameterSpec params = ECNamedCurveTable.getParameterSpec(CurveName);)
其从doECDH
函数调用
public static PrivateKey loadPrivateKey (byte [] data) throws Exception
{
Security.addProvider(new BouncyCastleProvider());
ECParameterSpec params = ECNamedCurveTable.getParameterSpec(CurveName);
ECPrivateKeySpec prvkey = new ECPrivateKeySpec(new BigInteger(data),
params);
KeyFactory kf = KeyFactory.getInstance("ECDH", "BC");
return kf.generatePrivate(prvkey);
}
public static String doECDH (String data_Prv, String data_Pub) throws Exception
{
byte[] dataPrv = hexToBytes(data_Prv);
byte[] dataPub = hexToBytes(data_Pub);
KeyAgreement ka = KeyAgreement.getInstance("ECDH", "BC");
ka.init(loadPrivateKey(dataPrv));
ka.doPhase(loadPublicKey(dataPub), true);
byte [] secret = ka.generateSecret();
Shared_Key = bytesToHex(secret);
//SecretKey originalKey = new SecretKeySpec(secret, 0, secret.length, "ECDH");
return Shared_Key;
}
显示的代码,你初始化ECDH – shmakova
什么是你的BouncyCastle的版本?你使用哪个库(bcprov,bcmail等)? – 2017-06-02 19:39:37
bcprov-jdk15on-157 –