gpt4 book ai didi

android - java.security.NoSuchAlgorithmException : no such algorithm: ECDSA for provider BC

转载 作者:行者123 更新时间:2023-12-02 13:36:35 36 4
gpt4 key购买 nike

我正在尝试使用 KeyPairGenerator 函数生成一个 secp256k1 key 对。我的功能看起来像

public fun generateSECP256K1Keypair():KeyPair{
Security.addProvider(org.bouncycastle.jce.provider.BouncyCastleProvider())
var keypairGen: KeyPairGenerator = KeyPairGenerator.getInstance("ECDSA","BC")
val spec:ECGenParameterSpec = ECGenParameterSpec("secp256k1")
keypairGen.initialize(spec, SecureRandom())
var keyPair:KeyPair= keypairGen.genKeyPair()
return keyPair;

}

我的 gradle 文件依赖项看起来像这样
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
implementation 'com.android.support:appcompat-v7:28.0.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
implementation 'org.bouncycastle:bcprov-jdk15on:1.61'

}

当我尝试执行此功能时,出现以下错误
Process: com.example.myapplication, PID: 6477
java.lang.RuntimeException: Unable to create service com.example.myapplication.service.Myservice: java.security.NoSuchAlgorithmException: no such algorithm: ECDSA for provider BC
at android.app.ActivityThread.handleCreateService(ActivityThread.java:3201)
at android.app.ActivityThread.-wrap5(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1567)
at android.os.Handler.dispatchMessage(Handler.java:102)

如果我使用 SpongyCaSTLe 而不是 BouncyCaSTLe,它工作正常。但我不想在我的情况下使用 SpongyCaSTLe 提供程序。

最佳答案

我找到了这个,阅读这个。

从 4.0 版开始,Android 支持 ECDSA,使用 BouncycaSTLe (v1.46) 作为默认加密提供程序。见博客 https://nelenkov.blogspot.com.es/2011/12/using-ecdh-on-android.html?m=1

但是 Android 包含了 BouncycaSTLe 的缩短版本,并且没有对 ECDSA 的完全支持。您可以在链接中看到不支持算法 KeyPairGenerator/ECDSA,这是生成以太坊 key 所必需的算法。

不能直接包含 bouncycaSTLe 库,因为与包名 org.bouncycaSTLe 有冲突。我建议在你的项目中包含 spongycaSTLe,它是针对 Android org.spongycaSTLe 的 bouncycaSTLe 的重新打包版本。

包名冲突已在新的 android 版本中解决,但如果您的目标是旧版本,则需要确保使用的是哪个加密提供程序。

关于android - java.security.NoSuchAlgorithmException : no such algorithm: ECDSA for provider BC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55123228/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com