Kryptering (PBEWithMD5AndTripleDES)
HejJeg sidder og arbejder med et eksempel som er blevet postet tidligere her på eksperten angående kryptering (se kode). Koden nedenunder benytter sig af PBEWithMD5AndDES, men jeg har væres inde på Javas hjemmeside og set man også kan benytte sig af PBEWithMD5AndTripleDES men når jeg prøver at skrive dette istedet for PBEWithMD5AndDES får jeg en nullpointer exception.
Håber der er nogen som kan hjælpe mig.
med venlig hilsen
Anders
import javax.crypto.*;
import java.security.spec.*;
import javax.crypto.spec.*;
import java.io.UnsupportedEncodingException;
public class Kryptering extends Thread {
private Cipher ecipher;
private Cipher dcipher;
byte[] salt = {
(byte) 0xA9, (byte) 0x9B, (byte) 0xC8, (byte) 0x32,
(byte) 0x56, (byte) 0x35, (byte) 0xE3, (byte) 0x03
};
int iterationCount = 19;
public Kryptering(String passPhrase) {
try {
// Create the key
KeySpec keySpec = new PBEKeySpec(passPhrase.toCharArray(), salt,
iterationCount);
SecretKey key = SecretKeyFactory.getInstance(
"PBEWithMD5AndDES").generateSecret(keySpec);
ecipher = Cipher.getInstance(key.getAlgorithm());
dcipher = Cipher.getInstance(key.getAlgorithm());
// Prepare the parameter to the ciphers
AlgorithmParameterSpec paramSpec = new PBEParameterSpec(salt,
iterationCount);
ecipher.init(Cipher.ENCRYPT_MODE, key, paramSpec);
dcipher.init(Cipher.DECRYPT_MODE, key, paramSpec);
}
catch (java.security.InvalidAlgorithmParameterException e) {
}
catch (java.security.spec.InvalidKeySpecException e) {
}
catch (javax.crypto.NoSuchPaddingException e) {
}
catch (java.security.NoSuchAlgorithmException e) {
}
catch (java.security.InvalidKeyException e) {
}
}
public String encrypt(String str) {
try {
byte[] utf8 = str.getBytes("UTF8");
byte[] enc = ecipher.doFinal(utf8); // krypter
return new sun.misc.BASE64Encoder().encode(enc);
}
catch (javax.crypto.BadPaddingException e) {
}
catch (IllegalBlockSizeException e) {
}
catch (UnsupportedEncodingException e) {
}
catch (java.io.IOException e) {
}
return null;
}
public String decrypt(String str) {
try {
byte[] dec = new sun.misc.BASE64Decoder().decodeBuffer(str);
byte[] utf8 = dcipher.doFinal(dec); // dekrypter
return new String(utf8, "UTF8");
}
catch (javax.crypto.BadPaddingException e) {
}
catch (IllegalBlockSizeException e) {
}
catch (UnsupportedEncodingException e) {
}
catch (java.io.IOException e) {
}
return null;
}
}
