无法从 PKCS8 获取私钥

2023-12-20

无法从自行生成的 PKCS8 获取私钥。

我已经生成了私钥:

KeyPair pair = getKeyPair();
        
StringWriter privateWriter = new StringWriter();
try (JcaPEMWriter w = new JcaPEMWriter(privateWriter)) {
   w.writeObject(new JcaPKCS8Generator(pair.getPrivate(), null));

} catch (IOException e) {
     throw new RuntimeException(e);
}

现在我正在尝试从字符串中获取私钥。

   private PrivateKey getPrivateKeyFromString(String key)  {

        key = """
-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCoY5d/IeuUhznJ
HIxqSibQks5Hdm/2nd5HWvD/Jcdcd6wfjHuoUZyFarhm5sWR6aBj1ZAcj7o0hXPS
gRA64ka/eA09YcLe0FunKyUUwXihize3VbDDOrTqRgLdPdnbtcwFIYDok40IIUlK
...
x08Iqpel5FehCpIDAh/jqPNBfKLWV5TpRxvBDdrBAoGBALyv5VCiJjIUOgAsJ5cb
SwJLPGrlp7xSoe69TQ7Uc+GcvMwokP1hJCnaicKy/AyvQeBS5CQLu0nOfr0vy1mF
jAwpBvorgZ3HBlUYzIDyJKeep7Lj5nKHs5FicAOpTJCaKZAeruMW91Qh6KaMZwYb
hMg1M4O1HSDOsdDBg6wuoLqv
-----END PRIVATE KEY-----
                """;
        byte[] keyBytes = key.getBytes();
        PKCS8EncodedKeySpec spec = new PKCS8EncodedKeySpec(keyBytes);
        KeyFactory keyFactory = null;
        try {
            keyFactory = KeyFactory.getInstance("RSA");
            return keyFactory.generatePrivate(spec);
        } catch (NoSuchAlgorithmException | InvalidKeySpecException e) {
            throw new RuntimeException(e);
        }

    }

运行 getPrivateKeyFromString gGetting 时出现异常:

java.security.InvalidKeyException: invalid key format

Topaco 的回答很有帮助。这段代码现在可以工作了。

private PrivateKey getPrivateKeyFromString(String key)  {

            key = """
    -----BEGIN PRIVATE KEY-----
    MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCoY5d/IeuUhznJ
    HIxqSibQks5Hdm/2nd5HWvD/Jcdcd6wfjHuoUZyFarhm5sWR6aBj1ZAcj7o0hXPS
    ...
    jAwpBvorgZ3HBlUYzIDyJKeep7Lj5nKHs5FicAOpTJCaKZAeruMW91Qh6KaMZwYb
    hMg1M4O1HSDOsdDBg6wuoLqv
    -----END PRIVATE KEY-----
                    """;
            key = key.replace("-----BEGIN PRIVATE KEY-----", "")
                    .replace("-----END PRIVATE KEY-----", "")
                    .replaceAll("\n", "");
    
            byte[] keyBytes = Base64.getDecoder().decode(key);
            PKCS8EncodedKeySpec spec = new PKCS8EncodedKeySpec(keyBytes);
            KeyFactory keyFactory;
            try {
                keyFactory = KeyFactory.getInstance("RSA");
                return keyFactory.generatePrivate(spec);
            } catch (NoSuchAlgorithmException | InvalidKeySpecException e) {
                throw new RuntimeException(e);
            }
    
        }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法从 PKCS8 获取私钥 的相关文章

  • 如何在 Play java 中创建数据库线程池并使用该池进行数据库查询

    我目前正在使用 play java 并使用默认线程池进行数据库查询 但了解使用数据库线程池进行数据库查询可以使我的系统更加高效 目前我的代码是 import play libs Akka import scala concurrent Ex
  • 给定两个 SSH2 密钥,我如何检查它们是否属于 Java 中的同一密钥对?

    我正在尝试找到一种方法来验证两个 SSH2 密钥 一个私有密钥和一个公共密钥 是否属于同一密钥对 我用过JSch http www jcraft com jsch 用于加载和解析私钥 更新 可以显示如何从私钥 SSH2 RSA 重新生成公钥
  • JAXb、Hibernate 和 beans

    目前我正在开发一个使用 Spring Web 服务 hibernate 和 JAXb 的项目 1 我已经使用IDE hibernate代码生成 生成了hibernate bean 2 另外 我已经使用maven编译器生成了jaxb bean
  • INSERT..RETURNING 在 JOOQ 中不起作用

    我有一个 MariaDB 数据库 我正在尝试在表中插入一行users 它有一个生成的id我想在插入后得到它 我见过this http www jooq org doc 3 8 manual sql building sql statemen
  • 加速代码 - 3D 数组

    我正在尝试提高我编写的一些代码的速度 我想知道从 3d 整数数组访问数据的效率如何 我有一个数组 int cube new int 10 10 10 我用价值观填充其中 然后我访问这些值数千次 我想知道 由于理论上所有 3d 数组都存储在内
  • 反射找不到对象子类型

    我试图通过使用反射来获取包中的所有类 当我使用具体类的代码 本例中为 A 时 它可以工作并打印子类信息 B 扩展 A 因此它打印 B 信息 但是当我将它与对象类一起使用时 它不起作用 我该如何修复它 这段代码的工作原理 Reflection
  • Liferay ClassNotFoundException:DLFileEntryImpl

    在我的 6 1 0 Portal 实例上 带有使用 ServiceBuilder 和 DL Api 的 6 1 0 SDK Portlet 这一行 DynamicQuery query DynamicQueryFactoryUtil for
  • 无法解析插件 Java Spring

    我正在使用 IntelliJ IDEA 并且我尝试通过 maven 安装依赖项 但它给了我这些错误 Cannot resolve plugin org apache maven plugins maven clean plugin 3 0
  • 十进制到八进制的转换[重复]

    这个问题在这里已经有答案了 可能的重复 十进制转换错误 https stackoverflow com questions 13142977 decimal conversion error 我正在为一个类编写一个程序 并且在计算如何将八进
  • 禁止的软件包名称:java

    我尝试从数据库名称为 jaane 用户名 Hello 和密码 hello 获取数据 错误 java lang SecurityException Prohibited package name java at java lang Class
  • 从 127.0.0.1 到 2130706433,然后再返回

    使用标准 Java 库 从 IPV4 地址的点分字符串表示形式获取的最快方法是什么 127 0 0 1 到等效的整数表示 2130706433 相应地 反转所述操作的最快方法是什么 从整数开始2130706433到字符串表示形式 127 0
  • getResourceAsStream() 可以找到 jar 文件之外的文件吗?

    我正在开发一个应用程序 该应用程序使用一个加载配置文件的库 InputStream in getClass getResourceAsStream resource 然后我的应用程序打包在一个 jar文件 如果resource是在里面 ja
  • 在 Mac 上正确运行基于 SWT 的跨平台 jar

    我一直致力于一个基于 SWT 的项目 该项目旨在部署为 Java Web Start 从而可以在多个平台上使用 到目前为止 我已经成功解决了由于 SWT 依赖的系统特定库而出现的导出问题 请参阅相关thread https stackove
  • 仅将 char[] 的一部分复制到 String 中

    我有一个数组 char ch 我的问题如下 如何将 ch 2 到 ch 7 的值合并到字符串中 我想在不循环 char 数组的情况下实现这一点 有什么建议么 感谢您花时间回答我的问题 Use new String value offset
  • Google App Engine 如何预编译 Java?

    App Engine 对应用程序的 Java 字节码使用 预编译 过程 以增强应用程序在 Java 运行时环境中的性能 预编译代码的功能与原始字节码相同 有没有详细的信息这是做什么的 我在一个中找到了这个谷歌群组消息 http groups
  • 如何从终端运行处理应用程序

    我目前正在使用加工 http processing org对于一个小项目 但是我不喜欢它附带的文本编辑器 我使用 vim 编写所有代码 我找到了 pde 文件的位置 并且我一直在从 vim 中编辑它们 然后重新打开它们并运行它们 重新加载脚
  • 如何从指定日期获取上周五的日期? [复制]

    这个问题在这里已经有答案了 如何找出上一个 上一个 星期五 或指定日期的任何其他日期的日期 public getDateOnDay Date date String dayName 我不会给出答案 先自己尝试一下 但是 也许这些提示可以帮助
  • 如何在桌面浏览器上使用 webdriver 移动网络

    我正在使用 selenium webdriver 进行 AUT 被测应用程序 的功能测试自动化 AUT 是响应式网络 我几乎完成了桌面浏览器的不同测试用例 现在 相同的测试用例也适用于移动浏览器 因为可以从移动浏览器访问 AUT 由于它是响
  • simpleframework,将空元素反序列化为空字符串而不是 null

    我使用简单框架 http simple sourceforge net http simple sourceforge net 在一个项目中满足我的序列化 反序列化需求 但在处理空 空字符串值时它不能按预期工作 好吧 至少不是我所期望的 如
  • 静态变量的线程安全

    class ABC implements Runnable private static int a private static int b public void run 我有一个如上所述的 Java 类 我有这个类的多个线程 在里面r

随机推荐

  • 错误:使用 html-pdf NPM 时在 Cloud Run 上写入 EPIPE

    在这里我试图将 HTML 转换为 PDF 并使用 html pdf npm https www npmjs com package html pdf https www npmjs com package html pdf 该代码在本地运行
  • 何时使用详细类型说明符

    选择使用详细类型说明符是否有特别充分的理由 例如 在某些情况下 需要使用template or typename用于消除依赖关系歧义的关键字template或键入 但我想不出任何例子会发生这种情况 例如枚举 采取以下代码示例 enum Fo
  • 资源管理器资源集具有错误的值

    我正在开发一个使用本地化 resx 资源文件的 wpf prism 4 应用程序 经过一些调试 它没有按预期工作 我发现资源管理器的所有资源集都具有相同的值 默认 loc resx 的值 我的问题是 那里出了什么问题 先感谢您 好吧 我终于
  • 如何管理 Flash CS4 中具有链接类的库符号以在 Flash Builder 4 中进行编译/调试?

    我正在使用 Flash CS4 以下简称 Flash 构建一个视频播放器来创建图形符号 并使用 Flash Builder 4 FB4 进行编译和调试 以下是我在当前工作流程中采取的步骤 在Flash中创建图形符号 我为播放器创建了一些不同
  • 原生 Android/iOS 开发与 Marmalade SDK [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我们公司正处于原生 Android iPhone 开发和一些跨平台解决方案之间进行选择的边缘 特别是 Marmalade SDK 以前
  • Python try finally 块返回[重复]

    这个问题在这里已经有答案了 下面是有趣的代码 def func1 try return 1 finally return 2 def func2 try raise ValueError except return 1 finally re
  • 由于 AsyncTask 是一个单独的类,如何将 OnPostExecute() 的结果获取到主活动?

    我有这两节课 我的主要活动和扩展活动AsyncTask 现在在我的主要活动中我需要从OnPostExecute in the AsyncTask 我如何将结果传递或获取到我的主要活动 这是示例代码 我的主要活动 public class M
  • in 或 for_each 哪个对每个更可取?

    使用Visual Studio时 我至少可以通过以下三种方式来编写容器遍历 哪种方式更可取 假设 vector
  • Android Studio 2.2 原生开发迁移问题

    在切换到 AS 2 2 之前 我有以下结构来实现我的 C app src main jni Android mk app src main jni Application mk app src main jni headers app sr
  • FluentAssertions,确保 IEnumerable 仅包含单个元素

    我正在编写单元测试 我有一些看起来像这样的东西 Fact public void GetFoos only gets foo1 foo1 included true Foo object foo2 included false Foo ob
  • 不使用加载数据命令填充数据库

    如何填充数据 csv文件 导入 MySql Windows 5 1 而不使用加载数据命令 他们是否试图让您学习脚本语言 如果是的话 Python 怎么样 我刚刚测试了以下代码是否满足您的要求 请注意 您需要下载第 3 方 MySQLdb 模
  • 将新规则文件添加到现有知识会话

    我想向现有的规则文件添加一个新的规则文件 或修改现有的规则文件 KieSession在运行时动态地 我找到了一个answer https stackoverflow com a 22208775 1925388关于这一点并尝试了那里提到的解
  • 无法启动 AVD [重复]

    这个问题在这里已经有答案了 我看过很多关于此的问题和答案 但找不到适合我的答案 我无法创建或启动任何设备 您需要下载并安装适合该 API 级别的映像 请注意 CPU ABI 字段呈灰色 这准确地说明了您需要做什么 只需打开 SDK 管理器
  • 如何在 macOS 应用程序中使用 Swift 监听全局热键?

    我试图在我的 Mac OS X 应用程序中使用 Swift 编写一个处理程序 用于全局 系统范围 热键组合 但我找不到合适的文档 我读过 我必须在一些遗留的 Carbon API 中搞乱它 有没有更好的方法 您能给我展示一些概念验证 Swi
  • Python记录器格式化不是格式化字符串

    以下为内容mylogger py def get logger name my super logger log logging getLogger name log setLevel logging DEBUG formatter log
  • 需要澄清 Swift 中的类型转换运算符

    为什么在此 switch 语句中使用类型转换运算符 as 而不是其条件形式 as 我认为类型运算符只能是 as 或 as Apple Swift 文档没有对此提供足够的解释 这是 Swift 文档中的示例 var things Any th
  • 包含 Typescript 中类型值的所有选项的数组

    这是强制所有类型选项出现在键中的代码object 并且不允许使用其他键 type Fruit apple peach const objectWithAllFruitsAsKeys key in Fruit any apple peach
  • 用于从 C++ 代码生成 UML 图的 Eclipse 插件

    有没有可以从 C 源代码生成 UML 类图的 eclipse 插件 这也不是 Eclipse 插件 而是Umbrello UML 建模器 http uml sourceforge net index php来自 KDE 的软件是开源的 我使
  • jQuery 缓存 $(this) 有意义吗?

    我仍在学习 jQuery 但我还没有找到可靠的答案 我知道你每次使用 jQuery 选择器时 有性能成本 但确实 this 在大量使用之前应该缓存它会产生很大的成本吗 var this this 如果你经常使用它 是的 它是有意义的 或者是
  • 无法从 PKCS8 获取私钥

    无法从自行生成的 PKCS8 获取私钥 我已经生成了私钥 KeyPair pair getKeyPair StringWriter privateWriter new StringWriter try JcaPEMWriter w new