大佬教程收集整理的这篇文章主要介绍了InvalidKeyException: 无效的密钥格式,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试使用公钥加密纯文本。
我的代码因 InvalIDKeyException 而失败。
这是我的代码:@H_502_3@
private const val pubkey = "30820122300d06092a864886f70d01010105000382010f003082010a0282010100f357429c22add0d547ee3e4e876f921a0114d1aaa2e6eeac6177a6a2e2565ce9593b78ea0ec1d8335a9f12356f08e99ea0c3455d849774d85f954ee68d63fc8d6526918210f28dc51aa333b0c4cdc6bf9b029d1c50b5aef5e626c9c8c9c16231c41eef530be91143627205bbbf99c2c261791d2df71e69fbc83cdc7e37c1b3df4ae71244a691c6d2a73eab7617c713e9c193484459f45adc6dd0cba1d54f1abef5b2c34dee43fc0c067ce1c140bc4f81b935c94b116cce404c5b438a0395906ff0133f5b1c6e3b2bb423c6c350376eb4939f44461164195acc51ef44a34d4100f6a837e3473e3ce2e16cedbe67ca48da301f64fc4240b878c9cc6b3d30c316b50203010001"
private val cipher: Cipher
init {
val bytesKey = Base64.getDecoder().decode(pubkey)
val keySpec = X509EncodedKeySpec(bytesKey)
val keyFactory = KeyFactory.geTinstance("RSA")
val publicKey = keyFactory.generatePublic(keySpeC) // where exception has been thrown
cipher = Cipher.geTinstance("RSA")
cipher.init(Cipher.ENCRYPT_MODE,publicKey)
}
fun encrypt(plaintext: String): String {
val bytePlain = cipher.doFinal(plaintext.toByteArray())
return Base64.getEncoder().encodetoString(bytePlain)
}
pubkey
包含十六进制编码的密钥,即对于 bytesKey
的初始化,十六进制解码是必要的,而不是 Base64 解码。
Here 您可以找到 Kotlin 十六进制解码的实现。
还要注意,在实例化密码时,最好指定除算法之外的填充,例如RSA/ECB/PKCS1Padding
,否则应用依赖于提供者的默认填充,这可能与您预期的不同。
以上是大佬教程为你收集整理的InvalidKeyException: 无效的密钥格式全部内容,希望文章能够帮你解决InvalidKeyException: 无效的密钥格式所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。