如何从 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")
我有字符串格式的私钥。它的类型是 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")