Zum Inhalt springen

Datei verschlüsseln


aline234

Empfohlene Beiträge

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:

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 2 Wochen später...

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]

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

stehe mittlerweile wieder vor einem neuen problem, nachdem ich das alte gelöst habe :D

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 :D

weiß da jemand rat und tat?

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 7 Monate später...

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 1 Jahr später...

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...