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

在 Java 中使用 RSA 私鑰進(jìn)行加密

Encrypting with RSA private key in Java(在 Java 中使用 RSA 私鑰進(jìn)行加密)
本文介紹了在 Java 中使用 RSA 私鑰進(jìn)行加密的處理方法,對大家解決問題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧!

問題描述

我正在嘗試使用 RSA 私鑰加密某些內(nèi)容.

I'm trying to encrypt some content with an RSA private key.

我正在關(guān)注這個(gè)例子:http://www.junkheap.net/content/public_key_encryption_java

但將其轉(zhuǎn)換為使用私鑰而不是公鑰.按照那個(gè)例子,我認(rèn)為我需要做的是:

I'm following this example: http://www.junkheap.net/content/public_key_encryption_java

but converting it to use private keys rather than public. Following that example, I think what I need to do is:

  • 讀取 DER 格式的私鑰
  • 生成 PCKS8EncodedKeySpec
  • 從 KeyFactory 調(diào)用 generatePrivate() 以獲取私鑰對象
  • 使用該私鑰對象和 Cipher 對象進(jìn)行加密

那么,步驟:

密鑰是從 openssl 生成的:

The key was generated from openssl with:

openssl genrsa -aes256 -out private.pem 2048

然后轉(zhuǎn)換為DER格式:

and then was converted to DER format with:

openssl rsa -in private.pem -outform DER -out private.der

我使用以下方法生成 PKCS8EncodedKeySpec:

I generate the PKCS8EncodedKeySpec with:

byte[] encodedKey = new byte[(int)inputKeyFile.length()];

try {
    new FileInputStream(inputKeyFile).read(encodedKey);
} catch (FileNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

PKCS8EncodedKeySpec privateKeySpec = new PKCS8EncodedKeySpec(encodedKey);
return privateKeySpec;

然后生成私鑰對象:

PrivateKey pk = null;

try {
    KeyFactory kf = KeyFactory.getInstance(RSA_METHOD);
    pk = kf.generatePrivate(privateKeySpec);
} catch (NoSuchAlgorithmException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
} catch (InvalidKeySpecException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
return pk;

但是,在調(diào)用時(shí):

pk = kf.generatePrivate(privateKeySpec);

我明白了:

java.security.spec.InvalidKeySpecException: Unknown key spec.
at com.sun.net.ssl.internal.ssl.JS_KeyFactory.engineGeneratePrivate(DashoA12275)
at com.sun.net.ssl.internal.ssl.JSA_RSAKeyFactory.engineGeneratePrivate(DashoA12275)
at java.security.KeyFactory.generatePrivate(KeyFactory.java:237)

問題:

  • 一般方法是否正確?
  • PCKS8EncodedKeySpec 是否正確使用?
  • 對無效密鑰規(guī)范錯誤有何想法?

推薦答案

首先,我很困惑為什么您打算使用 Cipher 來使用私鑰進(jìn)行加密,而不是簽名帶有簽名.我不確定所有 RSA Cipher 提供程序是否會使用正確的塊類型進(jìn)行設(shè)置,但值得一試.

First of all, I'm confused why you are planning to use a Cipher to encrypt with a private key, rather than signing with a Signature. I'm not sure that all RSA Cipher providers will use the correct block type for setup, but it's worth a try.

盡管如此,我認(rèn)為您正在嘗試加載非標(biāo)準(zhǔn) OpenSSL 格式的密鑰.使用 rsa 將其轉(zhuǎn)換為 DER 本質(zhì)上只是一個(gè) base-64 解碼;密鑰的結(jié)構(gòu)不是 PKCS #8.

Setting that aside, though, I think that you are trying to load a non-standard OpenSSL-format key. Converting it to DER with rsa is essentially just a base-64 decode; the structure of the key is not PKCS #8.

改為在 genrsa 之后,使用 openssl pkcs8 命令將生成的密鑰轉(zhuǎn)換為未加密的 PKCS #8,DER 格式:

Instead, after genrsa, use the openssl pkcs8 command to convert the generated key to unencrypted PKCS #8, DER format:

openssl pkcs8 -topk8 -nocrypt -in private.pem -outform der -out private.der

這將生成一個(gè)未加密的私鑰,可以使用 PKCS8EncodedKeySpec 加載.

This will produce an unencrypted private key that can be loaded with a PKCS8EncodedKeySpec.

這篇關(guān)于在 Java 中使用 RSA 私鑰進(jìn)行加密的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持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ù)組中刪除重復(fù)項(xiàng)?)
How to fix Invocation failed Unexpected Response from Server: Unauthorized in Android studio(如何修復(fù)調(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)
主站蜘蛛池模板: 亚洲 精品 综合 精品 自拍 | 毛片一级片 | 久久国产一区 | 久久午夜精品 | 亚洲欧洲中文 | 黄视频在线网站 | 久久麻豆精品 | 国产精品不卡一区 | 性高湖久久久久久久久aaaaa | 久久久.com | 国产精品欧美一区二区三区 | 精品日韩一区二区 | 亚洲成人精品久久 | 日韩www| 成人亚洲在线 | 黄色成人免费看 | 久久九精品 | 亚洲综合资源 | 成人片免费看 | 日韩成人在线观看 | 亚洲精品久久久一区二区三区 | 一级做a爰片性色毛片 | 天天色天天色 | av网址在线| 成人在线一级片 | 亚洲成人在线网 | 欧美一区二区成人 | 国产精品久久久久久av公交车 | 日韩一区二区在线播放 | 五月天综合影院 | 亚洲a视频 | 成人精品免费视频 | 亚洲精品中文字幕在线观看 | 成人亚洲一区 | 黄色免费网站在线看 | 国产精品一区一区 | 欧美激情在线精品一区二区三区 | 免费亚洲婷婷 | 新超碰97 | 亚洲精品888 | 精品网|