Avatar billede pham Nybegynder
18. maj 2004 - 12:57 Der er 2 kommentarer og
1 løsning

Kryptering (PBEWithMD5AndTripleDES)

Hej

Jeg 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;
}

}
Avatar billede arne_v Ekspert
18. maj 2004 - 20:08 #1
Hvis man nu skriver exceptions ud så ser man:

java.security.NoSuchAlgorithmException: Algorithm PBEWithMD5AndTripleDES not available

    at javax.crypto.SunJCE_b.a(DashoA6275)

    at javax.crypto.SecretKeyFactory.getInstance(DashoA6275)

    at Kryptering.<init>
Avatar billede pham Nybegynder
28. oktober 2004 - 10:47 #2
ok mange tak ligger du et svar.. :)
Avatar billede arne_v Ekspert
28. oktober 2004 - 15:32 #3
det kan jeg godt men har jeg hjulpet ?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester