Próbuję zaszyfrować niektóre treści kluczem prywatnym RSA.Szyfrowanie za pomocą klucza prywatnego RSA w Javie
Obserwuję ten przykład: http://www.junkheap.net/content/public_key_encryption_java
ale przekształcenie go używać kluczy prywatnych niż publicznych. W następstwie tego przykład, myślę, że to, co trzeba zrobić, to:
- Czytaj w DER formacie klucza prywatnego
- Generowanie PCKS8EncodedKeySpec
- rozmowę generatePrivate() z KeyFactory aby mieć prywatny obiektu Key
- użyj tego obiektu klucza prywatnego z obiektu Szyfrów zrobić szyfrowania
Więc kroki:
klucz został wygenerowany fro m openssl z:
openssl genrsa -aes256 -out private.pem 2048
a następnie przekształcono w formacie DER z:
openssl rsa -in private.pem -outform DER -out private.der
I wygenerować PKCS8EncodedKeySpec z:
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;
a następnie wygenerować klucz prywatny obiekt z:
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;
Jednak na wezwanie do:
pk = kf.generatePrivate(privateKeySpec);
uzyskać:
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)
pytania:
- Czy ogólne podejście prawda?
- Czy PCKS8EncodedKeySpec jest właściwym kluczem klucza?
- Jakieś przemyślenia na temat błędu nieprawidłowego klucza?
Przeszedłem przez ten i generowane je z Java: http://stackoverflow.com/questions/19640735/load-public-key-data-from -file – Hayro