RSA, Encrypt-Ausgabe immer unterschiedlich

theflash

Mitglied
Hallo,

ich versuche schon seit längerem Java und PHP per RSA irgendwie miteinander zu vereinen. Nun ist mir aufgefallen, dass Java grundsätzlich bei jeder neuen Verschlüsselung, einen unterschiedlichen Output liefert. - Wobei natürlich die Daten, der Modulus und der jeweilige Schluessel gleich bleiben! Deshalb meine Frage: Weis jemand ob Java z.B. irgendwie die Uhrzeit oder ein Padding oder irgendsowas in der Art mit in die verschlüsselten Daten einrechnet?


Hier ist mein Beispielcode:

Code:
private void encryptData(String filename, String data) {
		try {
			BigInteger modulus = new BigInteger(this.readFromFile("modulus.txt"));
			BigInteger pkExp = new BigInteger(this.readFromFile("pkExp.txt"));
			
			RSAPublicKeySpec pks = new RSAPublicKeySpec(modulus, pkExp);
			
			KeyFactory kf = KeyFactory.getInstance("RSA");
			PublicKey pk = kf.generatePublic(pks);			
			Cipher cipher = Cipher.getInstance("RSA");

			//Verschluesseln
			cipher.init(Cipher.ENCRYPT_MODE, pk);
			byte b = 1;
			
			CipherOutputStream cos = new CipherOutputStream(new FileOutputStream(filename), cipher);
			cos.write(b);
			cos.flush();
			cos.close();
		
		} catch(Exception e) {
			System.out.println(e);
		}
	}

Die Funktion soll einfach nur ein Byte verschlusseln. -Dabei müsste sie doch immer wieder das selbe ausgeben (bei gleichen Eingaben)- oder seh ich das falsch?

Die readFromFile-Methode liefert einfach nur einen String der Datei zurueck. Die Dateien andern sich nicht.
 
Zurück