aline234 Geschrieben 20. April 2007 Teilen Geschrieben 20. April 2007 hallo, ich habe absolut keine ahnung von java, wurde aber dennoch gebeten eine funktion zu schreiben, die dateien verschlüsseln kann. jetzt habe ich mich etwas informiert (internet is schon toll) und bin trotzdem ziermlich am anfang schon wieder mit meinem latein am ende. habe mich vorher auch noch nie mit verschlüsselung beschäftigt... also ich möchte gerne asymmetrisch verschlüsseln und habe bisher folgende 3 zeilen gefunden: KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA"); kpg.initialize(1024); KeyPair keyPair = kpg.genKeyPair(); somit habe ich also auf jeden fall schonmal beide schlüssel generiert, die ich brauche. allerdings weiß ich jetz nich wie ich mit diesen schlüsseln arbeite. sämtliche beispiele aus dem internet, die ich gefunden habe, beziehen sich nur auf die symmetrische verschlüsselung. mir fehlt einfach dieser anstoß auf den nächstens schritt. wie sage ich jetz, dass ich eine datei mit einem schlüssel verschlüsseln will? oder viel besser wäre ein wirklich gutes tutorial in dem es auch tatsächlich um die asymmetrische verschlüsselung geht. hoffe ihr könnt mir helfen ps: arbeite mit java 1.4 :mod: Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
J-ava- Geschrieben 1. Mai 2007 Teilen Geschrieben 1. Mai 2007 Hallöchen, vielleicht hilft dir das hier weiter: import java.security.KeyPair; import java.security.KeyPairGenerator; import java.security.PrivateKey; import java.security.PublicKey; import javax.crypto.Cipher; public class Crypt { private static final String ALGORITHM = "RSA"; private static final String TEXT = "Wenn du diesen Text lesen kannst hat das Ver- und Entschlüsseln funktioniert"; public static byte[] encrypt(PublicKey key, byte[] plain) throws Exception { Cipher cipher = Cipher.getInstance(ALGORITHM); cipher.init(Cipher.ENCRYPT_MODE, key); // verschluesseln return cipher.doFinal(plain); } public static byte[] decrypt(PrivateKey key, byte[] chiffr) throws Exception { Cipher cipher = Cipher.getInstance(ALGORITHM); cipher.init(Cipher.DECRYPT_MODE, key); // Entschlusseln return cipher.doFinal(chiffr); } public static void main(String[] args) { try { // Schluessel generieren: KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance(ALGORITHM); keyPairGen.initialize(1024); // 1024 maximale Schluesselbreite KeyPair keyPair = keyPairGen.generateKeyPair(); PrivateKey privKey = keyPair.getPrivate(); PublicKey pubKey = keyPair.getPublic(); // Es werden die Bytes vom Text benötigt byte[] bytes = TEXT.getBytes(); byte[] encrypt = encrypt(pubKey, bytes); byte[] decrypt = decrypt(privKey, encrypt); System.out.write(encrypt); System.out.println("\n"); System.out.write(decrypt); } catch (Exception e) { System.out.println(e); } } } Hab ich grad mal so zusammegestrikt ... könnte buggy sein Wenn du die daten dann in eine Datei speichern willst helfen dir die Input-und OutputStreams bzw. InputReader/OutputWriter für Plaintext weiter. Gruß J[ava] Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
aline234 Geschrieben 2. Mai 2007 Autor Teilen Geschrieben 2. Mai 2007 joa danke, mittlerweile hab ich das auch schon rausgefunden *stolz*. allerdings habe ich gerade ein problem beim entschlüsseln. this.cipher.init(Cipher.DECRYPT_MODE, this.keys.getPrivate()); // Decrypt the ciphertext using the private key byte[] newPlainText = cipher.doFinal(inhalt.getBytes("UTF8")); bei der 3. zeile des codeschnipsels schmeißt er ne exception: java.lang.ArrayIndexOutOfBoundsException: too much data for RSA block mit "data" meinen die den dateiinhalt? wenn ja, dann wundert mich das, denn der inhalt bestand aus "hallo test". oder liegt der hund ganz woanders begraben? :old Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
aline234 Geschrieben 3. Mai 2007 Autor Teilen Geschrieben 3. Mai 2007 stehe mittlerweile wieder vor einem neuen problem, nachdem ich das alte gelöst habe ich habe eine byte[] variable, die ich gerne in eine Key variable umwandeln möchte. (Key)bytevariable macht er leider nicht, wäre wahrscheinlich auch zu leicht gewesen weiß da jemand rat und tat? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Jaraz Geschrieben 3. Mai 2007 Teilen Geschrieben 3. Mai 2007 SecretKey secretKey = new SecretKeySpec(key, "AES"); key ist ein byte[] Gruß Jaraz Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
aline234 Geschrieben 3. Mai 2007 Autor Teilen Geschrieben 3. Mai 2007 ah super, danke dir edit: jetz im nachhinein hätt mir das auch selber einfallen können naja, wieder was gelernt... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
fatz Geschrieben 7. Dezember 2007 Teilen Geschrieben 7. Dezember 2007 hallo, habe gerade diesen beitrag gefunden und das beispiel programm von oben hat mir sehr geholfen. habe aber nun noch ein kleines problem. ich erzeuge mittels botan libs in c++ ein public, private schlüsselpaar. dort gebe ich als alg. auch rsa an mit einer bitrate von 1024 bit. ich gehe einfach mal davon aus dass das so die gleiche schlüsselart wie hier im java programm erstellt wird. nun speichere ich den so erstellten public key in ein datei nach x.509 norm und möchte den key in mein java programm importieren. weiß jemand wie man den import macht? konnte leider nichts finden. das x.509 format ist nicht zwingend . ich kann auch auf ein anderes format umsteigen wenn es den import erleichtern würde. hoffe mir kann jemand helfen. greetz fatz Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
bright Geschrieben 19. Februar 2009 Teilen Geschrieben 19. Februar 2009 Hallo, ich habe ein ähnlich gelagertes Problem. Ich möchte einen PublicKey aus einem keyfile instantieren. FileInputStream fis =new FileInputStream(PUBLIC_KEY_FILE); byte[] pubKeyBytes = new byte[(int)PUBLIC_KEY_FILE.length()]; fis.read(pubKeyBytes); fis.close(); KeyFactory keyFactory = KeyFactory.getInstance("RSA"); X509EncodedKeySpec pubSpec = new X509EncodedKeySpec(pubKeyBytes); RSAPublicKey pubKey = (RSAPublicKey) keyFactory.generatePublic(pubSpec); leider bekomme ich eine: java.security.InvalidKeyException: invalid key format Da key file hat folgendes Format: -----BEGIN PGP PUBLIC KEY BLOCK----- Version: PGP 6.5.2 mQGiBDlN8GERBADiIjPjksdfhklashd76a9wqcmGuuzfwHzNo+nHGNBa/UrI0XS6 somthing cutetd out here UUXcjNnHFKoQDHyWjk1lhBUfe/iWn0IYiL69TrZoLZPh7alkmYkARgQYEQIABgUC OU3wYQAKCRA9xJPyWjk1lhBUfeyWjk1lhBUfeyWjk1lhBOeRzJZfeACfc1HwyNx0 896YD5LYEqPB49SLfxc= =wOMv -----END PGP PUBLIC KEY BLOCK----- Welcher Algo steckt eigentlich hinter PGP? ist das RSA Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.