久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

我們?nèi)绾螌⒆址畯?PEM 轉(zhuǎn)換為 DER 格式

How do we convert a String from PEM to DER format(我們?nèi)绾螌⒆址畯?PEM 轉(zhuǎn)換為 DER 格式)
本文介紹了我們?nèi)绾螌⒆址畯?PEM 轉(zhuǎn)換為 DER 格式的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

以以下格式發(fā)送字符串:

Have a String being sent from in the below format:

-----BEGIN RSA PUBLIC KEY-----
MIGHAoGBANAahj75ZIz9nXqW2H83nGcUao4wNyYZ9Z1kiNTUYQl7ob/RBmDzs5rY
mUahXAg0qyS7+a55eU/csShf5ATGzAXv+DDPcz8HrSTcHMEFpuyYooX6PrIZ07Ma
XtsJ2J4mhlySI5uOZVRDoaFY53MPQx5gud2quDz759IN/0gnDEEVAgED
-----END RSA PUBLIC KEY-----

如何從這個字符串構(gòu)造一個 PublicKey 對象?已嘗試以下去掉頁眉頁腳和base64解碼緩沖區(qū)

How do i construct a PublicKey Object from this string ? Have tried the below Remove the header and footer and base64 decode the buffer

public static PublicKey getFromString(String keystr) throws Exception
  {
  //String S1= asciiToHex(keystr);
   byte[] keyBytes = new sun.misc.BASE64Decoder().decodeBuffer(keystr);
   X509EncodedKeySpec spec =
       new X509EncodedKeySpec(keyBytes);
     KeyFactory kf = KeyFactory.getInstance("RSA");
     return kf.generatePublic(spec);

  }

這會失敗,要么是無效的密鑰格式,要么會出現(xiàn)以下錯誤

This fails either as an invalid key format or will get below error

java.security.spec.InvalidKeySpecException: java.security.InvalidKeyException: IOException: algid parse error, not a sequence
 at sun.security.rsa.RSAKeyFactory.engineGeneratePublic(RSAKeyFactory.java:188)
 at java.security.KeyFactory.generatePublic(KeyFactory.java:304)
 at PublicKeyReader.getFromString(PublicKeyReader.java:30)
 at Tst.main(Tst.java:36)

正在通過openSSL的API生成密鑰PEM_write_bio_RSAPublicKey(bio, rsa);

The Key is being generated thro the API of openSSL PEM_write_bio_RSAPublicKey(bio, rsa);

推薦答案

通過調(diào)用 PEM_write_bio_RSAPublicKey,只有密鑰模數(shù)和公共指數(shù)被編碼到輸出 PEM 數(shù)據(jù)中.但是 X509EncodedKeySpec 應(yīng)該是這種 ASN.1 密鑰格式:

by calling PEM_write_bio_RSAPublicKey only the key modulus and public exponent are encoded into the output PEM data. However the X509EncodedKeySpec is expected this ASN.1 key format:

 SubjectPublicKeyInfo ::= SEQUENCE {
   algorithm AlgorithmIdentifier,
   subjectPublicKey BIT STRING }

您應(yīng)該使用 PEM_write_bio_PUBKEY 函數(shù),該函數(shù)使用 SubjectPublicKeyInfo 結(jié)構(gòu)對公鑰進行編碼,正如 X509EncodedKeySpec

You should use the PEM_write_bio_PUBKEY function which encodes the public key using the SubjectPublicKeyInfo structure which as expected by X509EncodedKeySpec

解碼密鑰的另一種可能的解決方案.不幸的是,我認為不可能只使用標準 JDK API,但可以使用 Bouncycastle圖書館

An other possible solution to decode the key. Unfortunately I don't think it is possible to do only with the standard JDK API but it can be done with the Bouncycastle library

import org.bouncycastle.asn1.*;
import org.bouncycastle.asn1.x509.RSAPublicKeyStructure;

public static PublicKey getFromString(String keystr) throws Exception
{
  //String S1= asciiToHex(keystr);
   byte[] keyBytes = new sun.misc.BASE64Decoder().decodeBuffer(keystr);
   ASN1InputStream in = new ASN1InputStream(keyBytes);
   DERObject obj = in.readObject();
   RSAPublicKeyStructure pStruct = RSAPublicKeyStructure.getInstance(obj);
   RSAPublicKeySpec spec = new RSAPublicKeySpec(pStrcut.getModulus(), pStruct.getPublicExponent());
   KeyFactory kf = KeyFactory.getInstance("RSA");
   return kf.generatePublic(spec);
}

這篇關(guān)于我們?nèi)绾螌⒆址畯?PEM 轉(zhuǎn)換為 DER 格式的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網(wǎng)!

【網(wǎng)站聲明】本站部分內(nèi)容來源于互聯(lián)網(wǎng),旨在幫助大家更快的解決問題,如果有圖片或者內(nèi)容侵犯了您的權(quán)益,請聯(lián)系我們刪除處理,感謝您的支持!

相關(guān)文檔推薦

Java Remove Duplicates from an Array?(Java從數(shù)組中刪除重復項?)
How to fix Invocation failed Unexpected Response from Server: Unauthorized in Android studio(如何修復調(diào)用失敗來自服務(wù)器的意外響應(yīng):在 Android 工作室中未經(jīng)授權(quán))
AES encryption, got extra trash characters in decrypted file(AES 加密,解密文件中有多余的垃圾字符)
AES Error: Given final block not properly padded(AES 錯誤:給定的最終塊未正確填充)
Detecting incorrect key using AES/GCM in JAVA(在 JAVA 中使用 AES/GCM 檢測不正確的密鑰)
AES-256-CBC in Java(Java 中的 AES-256-CBC)
主站蜘蛛池模板: 日韩在线免费看 | 麻豆久久久9性大片 | 麻豆久久久久久久久久 | 九九精品久久久 | 99久热| 天天躁日日躁狠狠的躁天龙影院 | 成人精品一区 | 欧美日韩高清 | 日韩在线观看网站 | 99热在线免费| 欧美日韩在线一区二区三区 | 国产亚洲精品美女久久久久久久久久 | 日韩欧美大片在线观看 | 久久久久国产精品一区 | www.婷婷| 日韩一区二区av | 911精品美国片911久久久 | 亚洲激情av| 日韩免费网站 | 91精品国产综合久久久久久 | 欧美男人天堂 | 综合网中文字幕 | 亚洲成人三区 | 国产成人一区二区三区精 | 国产伦精品一区二区三毛 | 欧美精品一区二区三区一线天视频 | 日本一二区视频 | 亚洲一二三区免费 | 超碰美女在线 | www.青青草 | 午夜影院在线观看 | 中日韩欧美一级片 | 97精品国产97久久久久久免费 | 99精品欧美一区二区三区综合在线 | 中文字幕一区二区三区精彩视频 | 久久亚洲国产精品日日av夜夜 | 中文字幕在线一区 | 久久婷婷香蕉热狠狠综合 | 羞羞羞视频| 欧美bondage紧缚视频 | 日韩亚洲欧美一区 |