RSA加密OpenSSLX509CertificateFactory$ParsingException: Error parsing public key报错解决

2023-05-16

RSA加密OpenSSLX509CertificateFactory$ParsingException: Error parsing public key报错解决

一、代码
private static final String RSA = "RSA";// 非对称加密密钥算法
    private static final String ECB_PKCS1_PADDING = "RSA/ECB/PKCS1Padding";//加密填充方式
    private final static String KEY ="MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAl7CuoFFgrxkQGi/LWV2yIUlLyOT7BaDjT8cJks/tfEUkpSNibvPZ2t0iflBl/i76LmdPwG8Zq23ySmODmgzx8g/Z51Onv6CSQ88jCXdL60UXvFqgcEO34POlyoCyrb1tNXV3ikjFbJVYdpnZ+yNzwCobp8217b6/xAULZgcWu2xlQ6jF1yNV/8YmZvCNfNz6SwOgEaengJzSk1rdfwXrmqzsceZrazSdgdvr69iRPQc69vvlge3tlNOnKo8cmESOnZ4jle5+Xy5/+n7IjEvJlKhOEgpWIF1FfjNDDgHXjl4jng1UoNkgwtxBvarG9YVKMZLdODdfMcwutbB9ayZ+fwIDAQAB"; //公钥
    /**
     * 用公钥对字符串进行加密
     *
     * @param data 原文
     * @return
     */
    @RequiresApi(api = Build.VERSION_CODES.O)
    public static String encryptByPublicKey(byte[] data) throws Exception {
        // 得到公钥
        X509EncodedKeySpec keySpec = new X509EncodedKeySpec(KEY.getBytes());
        KeyFactory kf = KeyFactory.getInstance(RSA);
        PublicKey keyPublic = kf.generatePublic(keySpec);
        // 加密数据
        Cipher cp = Cipher.getInstance(ECB_PKCS1_PADDING);
        cp.init(Cipher.ENCRYPT_MODE, keyPublic);
        return String.valueOf(cp.doFinal(data));
    }

报错如下:

java.security.spec.InvalidKeySpecException: com.android.org.conscrypt.OpenSSLX509CertificateFactory$ParsingException: Error parsing public key
问题解决

将公钥使用base64加密,改为:

@RequiresApi(api = Build.VERSION_CODES.O)
    public static String encryptByPublicKey(byte[] data) throws Exception {
        //获取公钥
        byte[] bytes = Base64.getDecoder().decode(KEY.getBytes());
        KeyFactory kf = KeyFactory.getInstance(RSA);
        PublicKey keyPublic = kf.generatePublic(new X509EncodedKeySpec(bytes));
        // 加密数据
        Cipher cp = Cipher.getInstance(ECB_PKCS1_PADDING);
        cp.init(Cipher.ENCRYPT_MODE, keyPublic);
        return Base64.getEncoder().encodeToString(cp.doFinal(data));
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

RSA加密OpenSSLX509CertificateFactory$ParsingException: Error parsing public key报错解决 的相关文章

随机推荐

  • java jetty 启动设置根路径

    在java学习过程中 xff0c 使用jetty来启动web应用来测试程序 xff0c 默认启动时的访问路径为 xff1a http localhost 8080 项目名 文件路径 xff0c 现需要将访问路径设置为 xff1a http
  • maven reimport 失效

    在用maven构建项目时发现 xff0c 添加新的 dependency 时maven reimport 总是不能将包引入 xff0c 编译时发现报 xff1a cannot access in offline mode 的错 xff0c
  • 业界难题-“跨库分页”的四种方案

    转载来源 xff1a 业界难题 跨库分页 的四种方案 一 需求缘起 分页需求 互联网很多业务都有分页拉取数据 的需求 xff0c 例如 xff1a xff08 1 xff09 微信消息过多时 xff0c 拉取第 N页消息 xff08 2 x
  • repeater合并单元格

    repeater中合并单元格 xff1a 在repeater bind 后直接加入以下代码 xff1a for int i 61 repeater1 Items Count 1 i gt 0 i HtmlTableCell rep prev
  • 在centOS6.8下更新安装gcc4.7.4

    因为科研需要 xff0c 在centOS6 8系统下配置matlab与C混合编程的环境 xff08 用C来调用MATLAB引擎 xff09 MATLAB安装的是R2015b的版本 xff08 之前安装R2014a版本 xff0c 没办法启动
  • C++很难吗?到底有多难?

    C 43 43 他爹Bjarne Stroustrup都曾开玩笑说自己已经搞不懂C 43 43 了 xff0c 他也曾多次表达过C 43 43 似乎已经有点太庞大了 其实也不是说C 43 43 语法多么复杂 xff0c 而是C 43 43
  • 十、Notepad++正则表达式使用

    推荐个正则表达式在线测试的工具http ccmpp com Regex Notepad 43 43 正则表达式使用 2011 01 06 10 01 35 分类 xff1a 文档 标签 xff1a 正则表达式 替换 notepad 43 4
  • ffmpeg分析 之 如何解析mpegts流

    转 xff1a http blog chinaunix net uid 20364597 id 3530284 html ffmpeg分析 之 如何解析mpegts流 2013 03 19 11 02 40 分类 xff1a LINUX 数
  • Spring简介

    一 Spring简介 1 Spring介绍 61 61 简化开发 61 61 xff0c 降低企业级开发的复杂性 61 61 框架整合 61 61 xff0c 高效整合其他技术 xff0c 提高企业级应用开发与运行效率 1 2 spring
  • SVN服务器彻底删除错误提交的版本

    尝试通过以下操作可以删除SVN服务器上错误提交的版本 xff0c 即本次提交 1 首先找到本次提交后生成的版本号 xff0c 例如为 xff1a 16 2 登录到SVN服务器上 xff0c 进入到项目的SVN目录 xff0c 或者找到本地的
  • Linux hosts.allow与hosts.deny文件设置

    redhat as4常用应用之hosts allow和hosts deny 一 概述 这两个文件是tcpd服务器的配置文件 xff0c tcpd服务器可以控制外部IP对本机服务的访问 这两个配置文件的格式如下 xff1a 服务进程名 主机列
  • 01python画的玫瑰

    刚开始学习python xff0c 还处于菜鸟阶段 xff0c 这段时间学习了turtle库 xff0c 纯手工画了一朵玫瑰 xff0c 拿出来与大家分享 xff01 源码地址 xff1a https github com YinZhong
  • 02turtle模块常用函数

    turtle模块函数
  • 04主存储器、BIOS和CMOS存储器

    主存储器 BIOS和CMOS存储器 一 PC AT机内存使用图 二 ROM BIOS 存放在ROM中的系统BIOS程序主要用于计算机开机时执行系统各部分的自检 xff0c 建立系统需要使用的各种配置表 xff0c 例如中断向量表 硬盘参数表
  • 06异常处理

    python的异常处理 python使用try except xff0c 可使程序不因为运行错误而崩溃 结构如下 xff1a try span class hljs tag lt span class hljs title body spa
  • 07turtle库的进阶使用

    turtle库的进阶使用 turtle库以屏幕中心为绘制原点利用代码绘制一棵树 span class hljs keyword import span turtle span class hljs string 34 34 34 plist
  • 01策略模式

    策略模式 最近在看 Head First设计模式 这本书 xff0c 最大的感触就是 xff0c 原来写代码也是有 套路 的 xff0c 刚学了策略模式 xff0c 用C 43 43 实现了一下 xff0c 做个笔记 xff0c 备忘 xf
  • 三十二、git pull简介

    本文整理自 xff1a http web mit edu mkgray project silk root afs sipb project git git doc git pull html http www cnblogs com lb
  • linux驱动开发 - 12_platform 平台驱动模型

    文章目录 platform 平台驱动模型1 platform 总线platform匹配过程 2 platform 驱动platform 驱动框架如下所示 xff1a 3 platform 设备platform 设备信息框架如下所示 xff1
  • RSA加密OpenSSLX509CertificateFactory$ParsingException: Error parsing public key报错解决

    RSA加密OpenSSLX509CertificateFactory ParsingException Error parsing public key报错解决 一 代码 span class token keyword private s