Hallo liebe Java Gemeinde,
bisher konnte ich Problemlösungen immer im Netz finden doch diesmal hänge ich ein wenig und bin etwas ratlos. Ich steige seit kurzer Zeit auf Java um und schreibe gerade an einer kleinen Applikation in der Textverschlüsselungen vorkommen.
Ich habe eine kleine Klasse welche mir einen String Base64 En/Decodiert.
Mit folgender Funktion wird der Text verschlüsselt:
So weit so gut. Mit folgender Funktion wird der Text wieder entschlüsselt:
Anmerkung: Die Variablen "keyString" und "msg" befinden sich in der Klasse.
Das hat soweit auch immer funktioniert doch mittlerweile schmeißt mir die Anwendung ständig eine OutOfMemory Exception: "Java heap space" raus wenn ich einen String mit decryptF() entschlüsseln will.
Woran liegt das? Sollte ich noch irgend etwas in der decryptF anpassen damit dieser Fehler nicht mehr vorkommt? Ich kann auch nicht erkennen an welcher Stelle der Memory wohl so vollgepackt wird. Aber dafür fehlt mir momentan noch das grundlegende Verständnis. Ich wäre über jeden Hinweis dankbar.
LG, Andreas
bisher konnte ich Problemlösungen immer im Netz finden doch diesmal hänge ich ein wenig und bin etwas ratlos. Ich steige seit kurzer Zeit auf Java um und schreibe gerade an einer kleinen Applikation in der Textverschlüsselungen vorkommen.
Ich habe eine kleine Klasse welche mir einen String Base64 En/Decodiert.
Mit folgender Funktion wird der Text verschlüsselt:
Java:
public static String encryptF() throws UnsupportedEncodingException, NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, IllegalBlockSizeException, BadPaddingException{
byte[] key = keyString.getBytes("UTF-8");
MessageDigest sha = MessageDigest.getInstance("MD5");
key = sha.digest(key);
key = Arrays.copyOf(key, 16);
SecretKeySpec secretKeySpec = new SecretKeySpec(key, "AES");
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec);
byte[] encrypted = Base64.encodeBase64(cipher.doFinal(msg.getBytes()));
String secretText = new String(encrypted);
return secretText;
}
So weit so gut. Mit folgender Funktion wird der Text wieder entschlüsselt:
Java:
public static String decryptF() throws UnsupportedEncodingException, NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, IllegalBlockSizeException, BadPaddingException, OutOfMemoryError{
byte[] key = keyString.getBytes("UTF-8");
MessageDigest sha = MessageDigest.getInstance("MD5");
key = sha.digest(key);
key = Arrays.copyOf(key, 16);
SecretKeySpec secretKeySpec = new SecretKeySpec(key, "AES");
byte[] decrypted = Base64.decodeBase64(msg);
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.DECRYPT_MODE, secretKeySpec);
byte[] cipherData = cipher.doFinal(decrypted);
String clearText = new String(cipherData);
return clearText;
}
Das hat soweit auch immer funktioniert doch mittlerweile schmeißt mir die Anwendung ständig eine OutOfMemory Exception: "Java heap space" raus wenn ich einen String mit decryptF() entschlüsseln will.
Woran liegt das? Sollte ich noch irgend etwas in der decryptF anpassen damit dieser Fehler nicht mehr vorkommt? Ich kann auch nicht erkennen an welcher Stelle der Memory wohl so vollgepackt wird. Aber dafür fehlt mir momentan noch das grundlegende Verständnis. Ich wäre über jeden Hinweis dankbar.
LG, Andreas