我已经尝试过以下问题的答案:

但是由于我调用时我的加密密钥已编码为DER

Object object = pemParser.readObject();

对象为null.

我可以使用openssl的命令将其转换为PEM(它也会解密密钥)

openssl pkcs8 -inform der -in pkey.key -out pkey.pem

但我需要读取其原始文件中的密钥

最佳答案

这两个问题都是关于使用OpenSSL的“旧版PEM”加密来解析和解密文件的.您使用的是PKCS8加密,尽管类似,但有所不同,因此Reading PKCS8 in PEM format: Cannot find provider更近了.您可以在此处使用大多数方法,但是可以跳过PEM解析:

import org.bouncycastle.asn1.ASN1Sequence;

import org.bouncycastle.asn1.pkcs.EncryptedPrivateKeyInfo; // NOT the

import org.bouncycastle.asn1.pkcs.PrivateKeyInfo; // javax ones!

import org.bouncycastle.openssl.jcajce.JcaPEMKeyConverter;

import org.bouncycastle.openssl.jcajce.JceOpenSSLPKCS8DecryptorProviderBuilder;

import org.bouncycastle.operator.InputDecryptorProvider;

import org.bouncycastle.pkcs.PKCS8EncryptedPrivateKeyInfo;

// args[0] = filename args[1] = password

FileInputStream fis = new FileInputStream(args[0]);

byte[] buff = new byte[9999]; int len = fis.read(buff); fis.close();

// could use File.readAllBytes in j8 but my dev machine is old

// create what PEMParser would have

ASN1Sequence derseq = ASN1Sequence.getInstance (Arrays.copyOf(buff,len));

PKCS8EncryptedPrivateKeyInfo encobj = new PKCS8EncryptedPrivateKeyInfo(EncryptedPrivateKeyInfo.getInstance(derseq));

// decrypt and convert key

JcaPEMKeyConverter converter = new JcaPEMKeyConverter();

InputDecryptorProvider decryptionProv = new JceOpenSSLPKCS8DecryptorProviderBuilder().build(args[1].toCharArray());

PrivateKeyInfo keyInfo = encobj.decryptPrivateKeyInfo(decryptionProv);

PrivateKey key = converter.getPrivateKey(keyInfo);

// now actually use key, this is just a dummy

System.out.println (key.getAlgorithm());

java 解析der文件_java-如何读取也用bouncycastle在DER中编码的PK...相关推荐

  1. java 解析xls 文件_java简单解析xls文件的方法示例【读取和写入】

    本文实例讲述了java简单解析xls文件的方法.分享给大家供大家参考,具体如下: 读取: import java.io.*; import jxl.*; import jxl.write.*; imp ...

  2. java解析yml文件_java读取解析application.yml

    java读取解析application.yml 不用依赖spring容器,可单独使用. bug已修改... 第一步.首先要2个jar com.fasterxml.jackson.dataformat ...

  3. java 解析xml 对象_Java反射——读取XML文件,创建对象

    读取XML文件,创建对象 config.xml import java.io.*; import java.lang.reflect.Constructor; import javax.xml.par ...

  4. java 快速读文件_java快速读取文件

    如何优雅读取文件,java想简单读写一个文件都要上10行代码.幸好guava和apache commons 都有提供简单操作文件工具. 简单介绍读取文件最后一行.读取文件第一行.读取大文件.往大文件追 ...

  5. java解析json文件_Java性能优化:正确的解析JSON文件

    数据收集服务平均1小时OOM(java.lang.OutOfMemoryError: GC overhead limit exceeded)一次,发现都是在下载处理 JSON Atom Feed时OO ...

  6. java 解析 svg文件_java – 如何加载和解析SVG文档

    概观 使用Apache Batik加载和解析SVG文件.该解决方案在将SVG文件转换为MetaPost的初步阶段显示Java代码.这应该提供有关如何使用Java从SVG文件加载,解析和提取内容的一般概 ...

  7. java解析csv文件写入mysql_java读取cvs文件并导入数据库

    本文实例为大家分享了java读取cvs文件并导入数据库的具体代码,供大家参考,具体内容如下 首先获取文件夹下面的所有类型相同的excel,可以用模糊匹配contains("匹配字段" ...

  8. java 读取mp3,java 解析MP3文件

    java 解析MP3文件 首先需要知道的是,MP3文件的文件信息都放在文件最后的128个字节里面,这128个字节分别存储的信息如下: char Header[3];    /* 标签头必须是" ...

  9. java 输出xml文件_java解析xml文件并输出

    使用java解析xml文件,通过dom4j,代码运行前需先导入dom4j架包. ParseXml类代码如下: import java.io.File; import java.util.ArrayLi ...

最新文章

  1. Vijos P1067Warcraft III 守望者的烦恼
  2. dqn在训练过程中loss越来越大_[动手学强化学习] 2.DQN解决CartPole-v0问题
  3. Method not found: '!!0[] System.Array.Empty()'.
  4. 3dmax高版本转低版本插件_视频编辑干货资料:低版本打开高版本pr文件
  5. vlookup练习_大胆合并吧!VLOOKUP坐字法专做单元格合并查找
  6. MySQL 逻辑架构与常用的存储引擎
  7. matlab解决无约束优化问题
  8. html 空行_一篇文章学习html「经典案例」
  9. 数据全生命周期管理应用平台的组成
  10. IDA pro 的Python环境变量设置
  11. 一次数据库的简单性能优化
  12. C++:vector二维数组初始化
  13. plsql无法连接64位oracle已解决
  14. linux基础命令(一)
  15. 运动控制系统常用传感器介绍
  16. aspose.total for C++ Crack
  17. 北京大学创业训练营专家讲座:创新大师乔布斯的创业理念与营销哲学
  18. OA产品的技术发展过程及未来趋势
  19. java设计模式简化版之六大原则
  20. 人脸识别的模板加载问题

热门文章

  1. 用CSS 实现水波扩散的特效
  2. OSI七层模型功能及相关设备
  3. [Unity3D] Unity3D连接安卓设备调试unity程序
  4. nofollow是什么意思?nofollow标签的写法和作用
  5. DHCP Relay的介绍
  6. PLC:学习笔记(西门子)3
  7. 百度迁徙大数据整理[2020+2019同期]
  8. GDScript:协程(Coroutine)(二)简单粗暴实用至上的语法设计
  9. 3dmax:3dmax三维VR渲染设置(VR发光贴图、VR灯光缓存、V-Ray焦散,渲染图中出现黑斑点的原因、插值类型)之详细攻略
  10. Android应用市场平台应用认领