如何从 android 中的 NIST P-256 字符串私钥生成私钥

How can I generate PrivateKey from NIST P-256 string private key In android

我有字符串格式的私钥。它的类型是 NIST P-256,看起来像这样:

-----BEGIN PRIVATE KEY----- 
MIGH...
HQ9+...
ZYrJ...
-----END PRIVATE KEY-----

我删除了带有页脚和空格的页眉。

我有:

import java.security.KeyFactory
import java.security.PrivateKey
import java.security.spec.PKCS8EncodedKeySpec

val privateKeyString = "myKey"
val sigBytes: ByteArray = Base64Utils.decode(privateKeyString)

val privateKeySpec = PKCS8EncodedKeySpec(sigBytes)
val keyFactory = KeyFactory.getInstance("RSA")

val privateKey : PrivateKey = keyFactory.generatePrivate(privateKeySpec)

我在哪里:

Caused by: 
java.security.spec.InvalidKeySpecException: Unexpected key type

我看到了一种移除人员的方法

-----开始私钥-----和 -----私钥结束-----

但这并没有帮助。 可能我应该使用不同于 PKCS8EncodedKeySpec 的东西 但我不确定,请有人帮助我)

要导入的私钥是 PKCS#8 格式的 PEM 编码密钥。 PKCS8EncodedKeySpec() 需要一个 DER 编码密钥,它是通过删除页眉、页脚和换行符以及 Base64 解码其余部分从 PEM 编码密钥派生的。

由于要导入 EC 密钥,因此必须将 EC 指定为算法而不是 RSA:

val keyFactory = KeyFactory.getInstance("EC")