【发布时间】:2021-07-06 11:51:34
【问题描述】:
我有字符串格式的私钥。它的类型是 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 不同的东西 但我不确定,请有人帮助我)
【问题讨论】:
-
您应该在 Base64 解码之前删除页眉、页脚和换行符。然后
PKCS8EncodedKeySpec()的实例化应该实际工作。你确定钥匙没问题? -
@user9014097 我更新了问题信息。我有一些空格,但在删除它们后出现新错误
Caused by: Unexpected key type -
您是否也删除了换行符?你能发布一个测试密钥吗?
-
@ user9014097确保测试一个看起来像这样:MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg0m4yLz + sdzZtBG9QHQ9 ++ wcfq1O4hOWgSBMb / A6eijyhRANCAAQeB0fBl2D7HZOKVBjpPiU2jabzNxQUZYrJ + MSA3LpzZxmRk2JaFHNujjkJghQT19HHjg3Fnkb8Y9oIhB9neXBI 跨度>
-
试试
KeyFactory.getInstance("EC"),你没有使用RSA。
标签: android kotlin security rsa private-key