【发布时间】:2017-06-03 04:49:52
【问题描述】:
尽管我下载了无限制的 JCE 策略并添加了 lib bcprov,但我在 Android 中遇到了这个异常。我还添加了以下行:
Security.addProvider(new BouncyCastleProvider());
请帮助我了解缺少的内容。我阅读了其他帖子,发现他们已经完成了上述操作。该应用程序在 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 的代码
-
您的 BouncyCastle 版本是什么?您正在使用哪些库(bcprov、bcmail 等)?
-
bcprov-jdk15on-157
-
相同的代码在 Eclipse 中完美运行!
-
如果在eclipse中能用,哪里不能用?可能正在使用不同的 jre(意味着不同的安全策略文件)
标签: java android bouncycastle