Moin moin,
ich versuche gerade einen String mittels eines Passwortes zu ver- und entschlüsseln.
Das Verschlüsseln mit Passwort funktioniert schon, allerdings die Entschlüsselung nicht, ich bekomme dort eine "BadPaddingException".
Ich hatte gedacht, dass das doFinal() das für mich erledigt.
Kann mir jemand helfen wo mein (Gedanken-)Fehler ist?
Danke schon mal.
Gruß LStrike
ich versuche gerade einen String mittels eines Passwortes zu ver- und entschlüsseln.
Das Verschlüsseln mit Passwort funktioniert schon, allerdings die Entschlüsselung nicht, ich bekomme dort eine "BadPaddingException".
Ich hatte gedacht, dass das doFinal() das für mich erledigt.
Kann mir jemand helfen wo mein (Gedanken-)Fehler ist?
Danke schon mal.
Gruß LStrike
Java:
public class KryptTest2 {
byte[] salt = {
(byte)0xc7, (byte)0x73, (byte)0x21, (byte)0x8c,
(byte)0x7e, (byte)0xc8, (byte)0xee, (byte)0x99
};
int count=20;
//....hier ist noch eine main und anderes Geraffel was nicht zum Problem gehört.
// Schlüssel erzeugen
private SecretKey makeKeyFromPassword(String passwort) {
PBEKeySpec pbeKeySpec = new PBEKeySpec(passwort.toCharArray());
try{
SecretKeyFactory keyFac = SecretKeyFactory.getInstance("PBEWithMD5AndDES");
SecretKey pbeKey = keyFac.generateSecret(pbeKeySpec);
return pbeKey;
}
catch(NoSuchAlgorithmException e){
return null;}
catch(InvalidKeySpecException e1){
return null;
}
}
// Verschluesselung und Entschluesselung
private String verschlüsseln(String nachricht, SecretKey secretKey) {
try{
PBEParameterSpec pbeParamSpec= new PBEParameterSpec(salt, count);
Cipher pbeCipher = Cipher.getInstance("PBEWithMD5AndDES");
pbeCipher.init(Cipher.ENCRYPT_MODE, secretKey, pbeParamSpec);
byte[] ciphertext= pbeCipher.doFinal(nachricht.getBytes());
return new String(ciphertext);
}
catch (Exception e){
return null;
}
}
private String entschlüsseln(String nachricht, SecretKey secretKey) {
try{
PBEParameterSpec pbeParamSpec= new PBEParameterSpec(salt, count);
Cipher pbeCipher = Cipher.getInstance("PBEWithMD5AndDES");
pbeCipher.init(Cipher.DECRYPT_MODE, secretKey, pbeParamSpec);
byte[] ciphertext= pbeCipher.doFinal(nachricht.getBytes());
return new String(ciphertext);
}
catch (Exception e){
return null;
}
}