Hallo,
ich möchte meine Daten mit RC4 verschlüsseln, dazu erzeuge ich mir einen Key und diesen muss ich in einer Datenbank als String speichern. Allerdings gelingt es mir nicht so wirklich...
Code zum Erzeugen des Key's
Dieser Key funktioniert auch wunderbar, allerdings muss ich irgendwie diesen Key in einen String umwandeln können und wieder zurück zu einem Key.
Mein derzeitiger Ansatz ist:
Damit wandle ich den Key zu einem String um. Um es zurück zu einem Key umzuwandeln benutze ich:
So das Problem ist jetzt:
1) Wenn ich einen neuen Key erstelle und dann zuerst zu String und dann wieder zu einem Key umwandle, dann ist key1.equals(key2) false.
2) Wenn ich key1 zuerst zu einem string mache, dann zurück zu einem key2 dann kann ich ab diesem Zeitpunkt beliebig oft zu string und wieder zu key umwandeln und die key's sind danach immer gleich key2, also key2.equals(keyN) ist immer true, für n >= 2.
D.h. diesen key könnte ich so nehmen, ABER wenn ich dann :
mache, bekomme ich einen Fehler, dass die Key Size falsch ist.
Ich nehme mal an, dass ich beim umwandeln in einen String (oder zurück) irgendwo was abschneide vom Key und es deshalb nicht geht.
Kann mir jemand vielleicht helfen?
edit:
Das .getEncoded() von beiden Key's ist aber absolut gleich. Trotzdem bekomme ich beim zweiten Key ab und zu "wrong Key Size". Kann das auftreten, wenn z.b. das erste Byte 0 ist und dann beim String abgeschnitten wird?
ich möchte meine Daten mit RC4 verschlüsseln, dazu erzeuge ich mir einen Key und diesen muss ich in einer Datenbank als String speichern. Allerdings gelingt es mir nicht so wirklich...
Code zum Erzeugen des Key's
Java:
kg = KeyGenerator.getInstance("RC4");
return kg.generateKey();
Dieser Key funktioniert auch wunderbar, allerdings muss ich irgendwie diesen Key in einen String umwandeln können und wieder zurück zu einem Key.
Mein derzeitiger Ansatz ist:
Java:
byte[] encoded = key.getEncoded();
return new BigInteger(1, encoded).toString(16);
Damit wandle ich den Key zu einem String um. Um es zurück zu einem Key umzuwandeln benutze ich:
Java:
byte[] encoded = new BigInteger(str, 16).toByteArray();
Key key = new SecretKeySpec(encoded, "RC4");
return key;
So das Problem ist jetzt:
1) Wenn ich einen neuen Key erstelle und dann zuerst zu String und dann wieder zu einem Key umwandle, dann ist key1.equals(key2) false.
2) Wenn ich key1 zuerst zu einem string mache, dann zurück zu einem key2 dann kann ich ab diesem Zeitpunkt beliebig oft zu string und wieder zu key umwandeln und die key's sind danach immer gleich key2, also key2.equals(keyN) ist immer true, für n >= 2.
D.h. diesen key könnte ich so nehmen, ABER wenn ich dann :
Java:
cipher.init(Cipher.DECRYPT_MODE, key);
mache, bekomme ich einen Fehler, dass die Key Size falsch ist.
Ich nehme mal an, dass ich beim umwandeln in einen String (oder zurück) irgendwo was abschneide vom Key und es deshalb nicht geht.
Kann mir jemand vielleicht helfen?
edit:
Das .getEncoded() von beiden Key's ist aber absolut gleich. Trotzdem bekomme ich beim zweiten Key ab und zu "wrong Key Size". Kann das auftreten, wenn z.b. das erste Byte 0 ist und dann beim String abgeschnitten wird?
Zuletzt bearbeitet: