尝试使用方法从文件中读取RSA私钥时
public PrivateKey getPrivateKey()
throws NoSuchAlgorithmException,
InvalidKeySpecException, IOException {
final InputStream inputStream = getClass().getClassLoader()
.getResourceAsStream("privatekey");
byte[] privKeyBytes = null;
try {
privKeyBytes = IOUtils.toByteArray(inputStream);
} catch (final IOException exception) {
LOGGER.error("", exception);
IOUtils.closeQuietly(inputStream);
}
LOGGER.debug("privKeyBytes: {}", privKeyBytes);
String BEGIN = "-----BEGIN RSA PRIVATE KEY-----";
String END = "-----END RSA PRIVATE KEY-----";
String str = new String(privKeyBytes);
if (str.contains(BEGIN) && str.contains(END)) {
str = str.substring(BEGIN.length(), str.lastIndexOf(END));
}
KeyFactory fac = KeyFactory.getInstance("RSA");
EncodedKeySpec privKeySpec =
new PKCS8EncodedKeySpec(Base64.decode(str.getBytes()));
return fac.generatePrivate(privKeySpec);
}
我例外
java.security.spec.InvalidKeySpecException: java.security.InvalidKeyException: IOException : algid parse error, not a sequence
at sun.security.rsa.RSAKeyFactory.engineGeneratePrivate(RSAKeyFactory.java:200) ~[na:1.6.0_23]
at java.security.KeyFactory.generatePrivate(KeyFactory.java:342) ~[na:1.6.0_23]
在fac.generatePrivate(privKeySpec)调用中。
这个错误是什么意思?
谢谢
德米特里
这意味着您的密钥不是PKCS#8格式。最简单的方法是使用openssl pkcs8 -topk8 <...other options...>
命令一次转换密钥。或者,您可以使用Bouncycastle轻量级API的PEMReader
类。
问题内容: 我正在尝试将用ssl生成的RSA私钥加载到Java中,我的代码是: 生成密钥 : 结果: 加载: 并抛出一个。错误在哪里? 问题答案: 如果需要,您仍然可以加载密钥, 您所需要的只是模数和指数。
问题内容: 我有一个用PHP编写的页面。我无权访问服务器。我想这样做,而不是在PHP遇到错误时显示错误消息,而是给出500。 问题答案: 如果display_errors关闭,PHP 5.2默认会发送致命错误的HTTP 500。如果托管使用较旧的PHP,则必须注册自己的错误处理程序以及可能的异常处理程序,然后将用户重定向到您的500错误页面。尝试按照@Umang的建议在PHP脚本中设置displa
问题内容: 我正在尝试解析包含一个城市的大型json文件(以下是文件中的前两个城市): 我想获取其“名称”值与字符串匹配的城市的ID: 但是,出现以下错误: 然后冒号后,它吐出了整个文件。 问题答案: 改成 因为它在顶层包含一个数组
给出以下步骤列表 当endpoint返回HTTP 200(这是一个错误,我需要修复),但无效的json响应,如 将引发此异常 我希望看到测试失败,因为收到预期404的错误状态代码200。我想知道在空手道中抛出这个异常是否正确? 谢谢
问题内容: 我正在使用Handlebars模板,并且[Object object]中已经表示了JSON数据,如何在Handlebars之外解析此数据?例如,我试图通过handlebars标签在页面上填充一个JavaScript变量,但这不起作用。 有什么建议?谢谢! 编辑: 为了澄清起见,我使用的是带有手把的ExpressJS模板。在我的路线中,我有这个: 然后在index.hbs模板中,我有了一
问题内容: 我正在使用 其中的字符串是格式。 例如,如果是40/02/2013,我将获得一个错误,而parse方法将返回Date 2013年3月12日(12/03/2013)。我在抱怨什么? 问题答案: 设置宽大处理位: 指定日期/时间解析是否宽松。使用宽大的解析,解析器可以使用试探法来解释与该对象的格式不完全匹配的输入。在严格分析的情况下,输入必须与该对象的格式匹配。 如下代码: 给出: 笔记