Hiho,
ich würde gerne einen String verschlüsseln und auch wieder entschlüsseln. Bisher brachte ich es zu folgendem Code:
So das funktioniert auch (fast) soweit!
Möchte ich besipielsweise "HalloWelt" verschlüsseln und wieder entschlüsseln bekomme ich nur "HalloWel" zurück. Wenn ich es mit "1234567890" versuche bekomme ich "123456789078" zurück. Mit "1234" klappt es. Ich habe also nun Grund zu der Annahme, dass nur ganzzahlige Vielfache von 4 (byte) gültige bzw. vollständig zu verschlüsselnde Datensätze darstellen.
Wie kann ich aber nun auch andere Textlängen verschlüsseln bzw. den original Text wiederbekommen?
bye Saxony
ich würde gerne einen String verschlüsseln und auch wieder entschlüsseln. Bisher brachte ich es zu folgendem Code:
Java:
public class MyCipher {
private Cipher cipher;
private Key key;
public MyCipher () {
try {
this.cipher = Cipher.getInstance("AES");
byte[] raw = { viele (16) bytes };
this.key = new SecretKeySpec(raw, "AES");
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (NoSuchPaddingException e) {
e.printStackTrace();
}
}
private String encrypt(String aData) {
String result = "";
try {
cipher.init(Cipher.ENCRYPT_MODE, key);
byte[] decodedData = new BASE64Decoder().decodeBuffer(aData);
byte[] encryptedData = cipher.doFinal(decodedData);
result = new BASE64Encoder().encode(encryptedData);
} catch (InvalidKeyException e) {
e.printStackTrace();
} catch (IllegalBlockSizeException e) {
e.printStackTrace();
} catch (BadPaddingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return result;
}
private String decrypt(String aData) {
String result = "";
try {
cipher.init(Cipher.DECRYPT_MODE, key);
byte[] decodedData = new BASE64Decoder().decodeBuffer(aData);
byte[] encryptedData = cipher.doFinal(decodedData);
result = new BASE64Encoder().encode(encryptedData);
} catch (InvalidKeyException e) {
e.printStackTrace();
} catch (IllegalBlockSizeException e) {
e.printStackTrace();
} catch (BadPaddingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return result;
}
}
So das funktioniert auch (fast) soweit!
Möchte ich besipielsweise "HalloWelt" verschlüsseln und wieder entschlüsseln bekomme ich nur "HalloWel" zurück. Wenn ich es mit "1234567890" versuche bekomme ich "123456789078" zurück. Mit "1234" klappt es. Ich habe also nun Grund zu der Annahme, dass nur ganzzahlige Vielfache von 4 (byte) gültige bzw. vollständig zu verschlüsselnde Datensätze darstellen.
Wie kann ich aber nun auch andere Textlängen verschlüsseln bzw. den original Text wiederbekommen?
bye Saxony