【问题标题】:flexiprovider conflicts with bouncycastle when retrieving keys from string从字符串中检索键时,flexiprovider 与 bouncycastle 冲突
【发布时间】:2023-04-03 21:30:01
【问题描述】:

一段时间以来,我一直在使用下面提供的解决方案来使用 Flexiprovider 进行加密/解密。该解决方案适用于 Galaxy s5 和 s6。但是,在 s9 中它不起作用,因为它与 BouncyCastle 冲突。 在 s5 和 s6 中工作的代码:

 KeyPairGenerator kpg = KeyPairGenerator.getInstance("ECIES", "FlexiEC");
 CurveParams ecParams = new CurveRegistry.BrainpoolP512r1();
 kpg.initialize(ecParams, new SecureRandom());
 KeyPair keyPair = kpg.generateKeyPair();
 PublicKey pubKey = keyPair.getPublic();
 PrivateKey privKey = keyPair.getPrivate();
 String STRpubKey = Base64.encodeToString(pubKey.getEncoded(), 
 Base64.DEFAULT);
 byte[] decodedPublicKey = Base64.decode(STRpubKey, Base64.DEFAULT);
 X509EncodedKeySpec X509spec = new X509EncodedKeySpec(decodedPublicKey);
 KeyFactory keyFactory = KeyFactory.getInstance("ECIES","FlexiEC");
 PublicKey pubkey = keyFactory.generatePublic(X509spec);

以上代码在s9中出现如下错误:

java.lang.RuntimeException: java.lang.NullPointerException: Attempt to invoke virtual method 'com.android.org.bouncycastle.math.ec.ECCurve com.android.org.bouncycastle.asn1.x9.X9ECParameters.getCurve()' on a null object reference

异常发生在这里:

 PublicKey pubkey = keyFactory.generatePublic(X509spec);

【问题讨论】:

  • 哪一行抛出异常?
  • 另外,Flexiprovider 似乎自 2014 年以来就没有更新过,并且该网站似乎已经消失了。这表明是时候摆脱对它的依赖了。
  • @JamesKPolk 最后一行导致异常。问题已更新。你说得对。我打算用 SC 代替它。但是,为了学习,我想知道如何防止这种冲突。
  • 好的,我看看能不能在模拟器上重现。

标签: android android-studio bouncycastle jave


【解决方案1】:

此问题是由 Android 提供的“BC”提供程序中缺乏对 Brainpool 曲线的支持引起的。一种解决方法是删除 Android 提供的 BC 提供程序并安装您自己的支持这些曲线的 BC 提供程序副本。例如,我在我的 Android Studio 项目中添加了对最新 bouncycastle jar bcprov-jdk15on-161.jar 的 jar 依赖,并在执行示例代码之前添加了以下代码行:

Security.removeProvider("BC");
Security.addProvider(new BouncyCastleProvider());
Security.addProvider(new FlexiECProvider());

并且代码在没有抛出异常的情况下运行。您也可以考虑使用不那么晦涩的曲线,例如 secp256r1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-27
    • 2023-04-06
    • 2018-06-02
    • 1970-01-01
    • 2012-02-13
    • 1970-01-01
    • 2021-11-05
    相关资源
    最近更新 更多