Ich möchte ein RSA-Schlüsselpaar erstellen und es für die Codierung/Decodierung von Daten verwenden. Mein Code ist ziemlich kurz, aber ich kann keinen Fehler finden.Direkte Codierung/Decodierung führt nicht zu Originaldaten
Kann mir jemand helfen, mein Problem zu finden?
Danke für jeden Hinweis!
// Generate key pair.
KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA");
kpg.initialize(1024, new SecureRandom());
KeyPair keyPair = kpg.genKeyPair();
PublicKey publicKey = keyPair.getPublic();
PrivateKey privateKey = keyPair.getPrivate();
// Data to encode/decode.
byte[] original = "The quick brown fox jumps over the lazy dog.".getBytes("UTF8");
// Encode data with public key.
Cipher cipherEncoder = Cipher.getInstance("RSA/ECB/NoPadding");
cipherEncoder.init(Cipher.ENCRYPT_MODE, publicKey);
byte[] encodedData = cipherEncoder.doFinal(original);
// Decode data with private key.
Cipher cipherDecoder = Cipher.getInstance("RSA/ECB/NoPadding");
cipherDecoder.init(Cipher.DECRYPT_MODE, privateKey);
byte[] decodedData = cipherEncoder.doFinal(encodedData);
// Output.
System.out.println(new String("Original data: " + new String(original, "UTF8")));
System.out.println(new String("Encoded/decoded: " + new String(decodedData, "UTF8")));
Die Ausgabe am Ende scheint eigenartig zu sein.
Zeigen Sie die Ausgänge ... – fge
Lehrbuch RSA (ohne Padding) ist wirklich unsicher. PKCS # 1 v1.5 padding (11 Byte Overhead) sollte ebenfalls nicht verwendet werden. Heutzutage wird OAEP empfohlen (42 Byte Overhead für SHA1). –
@ ArtjomB. Danke für diesen Hinweis! Hast du ein OAEP Code Beispiel für mich? – Christian