Hi,
ich muss euch nocheinmal um Hilfe bitten. Ich habe folgende Funktion:
Die ich folgender Maßen aufrufe:
Ret wurde vorher aus der Datenbank geholt, und es wurde mit encrypt() hineingeschrieben.
Es tritt folgende Exception auf, die ich mich einfach nciht erklären kann:
Given final block not properly padded
An anderen stellen Funktionieren beide Funktion herforagend. Desshalb kann ich es mir nicht erklären wo die Exception her kommt.
MFG
Marc
ich muss euch nocheinmal um Hilfe bitten. Ich habe folgende Funktion:
Code:
package de.kohlbau.fibus.content;
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;
public class Encryption {
private Cipher ecipher;
private Cipher dcipher;
private static final String password = "diesistgeheim";
public Encryption() throws Exception {
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
DESKeySpec keySpec = new DESKeySpec(password.getBytes());
SecretKey key = keyFactory.generateSecret(keySpec);
ecipher=Cipher.getInstance("DES");
dcipher=Cipher.getInstance("DES");
ecipher.init(Cipher.ENCRYPT_MODE, key);
dcipher.init(Cipher.DECRYPT_MODE, key);
}
public Encryption(String pass) throws Exception {
if(pass.length() < 8) {
int temp = 8-pass.length();
for(int i = 0; i < temp; i++ ) pass+="a";
}
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
DESKeySpec keySpec = new DESKeySpec(pass.getBytes());
SecretKey key = keyFactory.generateSecret(keySpec);
ecipher=Cipher.getInstance("DES");
dcipher=Cipher.getInstance("DES");
ecipher.init(Cipher.ENCRYPT_MODE, key);
dcipher.init(Cipher.DECRYPT_MODE, key);
}
public String encrypt(String str) throws Exception {
byte[] utf8=str.getBytes("UTF8");
byte[] enc=ecipher.doFinal(utf8);
return new sun.misc.BASE64Encoder().encode(enc);
}
public String decrypt(String str) throws Exception {
byte[] dec=new sun.misc.BASE64Decoder().decodeBuffer(str);
byte[] utf8=dcipher.doFinal(dec);
return new String(utf8, "UTF8");
}
}
Die ich folgender Maßen aufrufe:
Code:
ret = "+q34BMLhylakXuSW5//Vuw==";
ret = new Encryption(ret).decrypt(ret);
Ret wurde vorher aus der Datenbank geholt, und es wurde mit encrypt() hineingeschrieben.
Es tritt folgende Exception auf, die ich mich einfach nciht erklären kann:
Given final block not properly padded
An anderen stellen Funktionieren beide Funktion herforagend. Desshalb kann ich es mir nicht erklären wo die Exception her kommt.
MFG
Marc