RSA秘密鍵で一部のコンテンツを暗号化しようとしています。JavaのRSA秘密鍵で暗号化
私はこの例を次のようだ: http://www.junkheap.net/content/public_key_encryption_java
が、それはむしろ、公開よりも、秘密鍵を使用するように変換します。その例に続いて、私は何をする必要があるかと思いますされています
- 読むには、DER形式でキー
- プライベートプライベートキーオブジェクト
- を得るためにするKeyFactoryからPCKS8EncodedKeySpec
- コールgeneratePrivateを()の生成します
キーがあちこちに生成されました:
ので、手順は、暗号化を行うためにCipherオブジェクトとその秘密鍵オブジェクトを使用しますm個のopenssl:その後、
openssl genrsa -aes256 -out private.pem 2048
とはしてDER形式に変換した:
openssl rsa -in private.pem -outform DER -out private.der
私はあるPKCS8EncodedKeySpecを生成します。
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;
しかし、への呼び出しに:
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は正しいキーペックを使用しますか?
- 無効なキー仕様のエラーについて考えていますか?すべての
は、私はこの1つを経て、Javaを使用して生成された:http://stackoverflow.com/questions/19640735/load-public-key-data-from -file – Hayro