没有这样的算法:提供者 BC 的 ECDSA
no such algorithm: ECDSA for provider BC
我的应用程序是 minSDK 15 - 所以我想我可以直接使用 BouncyCastle。不幸的是我得到了一个 NoSuchAlgorithmException。那我必须使用 SpongyCastle 吗?该库在 JVM 应用程序中运行良好 - 但在 android.
上失败
Caused by: java.security.NoSuchAlgorithmException: no such algorithm: ECDSA for provider BC
at sun.security.jca.GetInstance.getService(GetInstance.java:87)
at sun.security.jca.GetInstance.getInstance(GetInstance.java:206)
at java.security.KeyPairGenerator.getInstance(KeyPairGenerator.java:307)
at org.kethereum.crypto.Keys.createSecp256k1KeyPair$crypto(Keys.kt:43)
at org.kethereum.crypto.Keys.createEcKeyPair(Keys.kt:51)
at org.walleth.data.keystore.KethereumWallethKeyStore.newAddress(KethereumWallethKeyStore.kt:43)
at org.walleth.activities.CreateAccountActivity$onCreate.onClick(CreateAccountActivity.kt:95)
at android.view.View.performClick(View.java:6256)
at android.view.View$PerformClick.run(View.java:24701)
at android.os.Handler.handleCallback(Handler.java:789)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6541)
Android 自 4.0 版以来引入了对 ECDSA 的支持,使用 Bouncycastle (v1.46) 作为默认加密提供程序。查看博客 https://nelenkov.blogspot.com.es/2011/12/using-ecdh-on-android.html?m=1
但是 Android 包含了 Bouncycastle 的简化版本,并且没有对 ECDSA 的完全支持。您可以在 link 中看到不支持算法 KeyPairGenerator/ECDSA
,这是生成以太坊密钥所需的算法。
您不能直接包含 bouncycastle 库,因为与包名有冲突 org.bouncycastle
。我建议在你的项目中包含 spongycastle,它是 Android org.spongycastle
的 bouncycastle 的重新打包版本。
包名称冲突已在新 android 版本中解决,但如果您的目标是旧版本,则需要确保使用的是哪个加密提供程序。
我的应用程序是 minSDK 15 - 所以我想我可以直接使用 BouncyCastle。不幸的是我得到了一个 NoSuchAlgorithmException。那我必须使用 SpongyCastle 吗?该库在 JVM 应用程序中运行良好 - 但在 android.
上失败 Caused by: java.security.NoSuchAlgorithmException: no such algorithm: ECDSA for provider BC
at sun.security.jca.GetInstance.getService(GetInstance.java:87)
at sun.security.jca.GetInstance.getInstance(GetInstance.java:206)
at java.security.KeyPairGenerator.getInstance(KeyPairGenerator.java:307)
at org.kethereum.crypto.Keys.createSecp256k1KeyPair$crypto(Keys.kt:43)
at org.kethereum.crypto.Keys.createEcKeyPair(Keys.kt:51)
at org.walleth.data.keystore.KethereumWallethKeyStore.newAddress(KethereumWallethKeyStore.kt:43)
at org.walleth.activities.CreateAccountActivity$onCreate.onClick(CreateAccountActivity.kt:95)
at android.view.View.performClick(View.java:6256)
at android.view.View$PerformClick.run(View.java:24701)
at android.os.Handler.handleCallback(Handler.java:789)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6541)
Android 自 4.0 版以来引入了对 ECDSA 的支持,使用 Bouncycastle (v1.46) 作为默认加密提供程序。查看博客 https://nelenkov.blogspot.com.es/2011/12/using-ecdh-on-android.html?m=1
但是 Android 包含了 Bouncycastle 的简化版本,并且没有对 ECDSA 的完全支持。您可以在 link 中看到不支持算法 KeyPairGenerator/ECDSA
,这是生成以太坊密钥所需的算法。
您不能直接包含 bouncycastle 库,因为与包名有冲突 org.bouncycastle
。我建议在你的项目中包含 spongycastle,它是 Android org.spongycastle
的 bouncycastle 的重新打包版本。
包名称冲突已在新 android 版本中解决,但如果您的目标是旧版本,则需要确保使用的是哪个加密提供程序。