程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了InvalidKeyException: 无效的密钥格式大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决InvalidKeyException: 无效的密钥格式?

开发过程中遇到InvalidKeyException: 无效的密钥格式的问题如何解决?下面主要结合日常开发的经验,给出你关于InvalidKeyException: 无效的密钥格式的解决方法建议,希望对你解决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,请注明来意。