Avatar billede di8leva Nybegynder
15. juni 2003 - 18:11 Der er 5 kommentarer og
1 løsning

Kryptering i Java

Jeg har kommit så långt som
import javax.crypto.*;
Men sen vid jag ikke hvordan jag laver.

Jeg vill ha en "one-way-hash". Jeg skal sende in en String til en metode som krypterar den, og den skal ikke gå at de-kryptera. Ungefär som bruger-password's i Linux.

MVH

Anders
Avatar billede arne_v Ekspert
15. juni 2003 - 18:16 #1
Et MD5 eksempel:

import java.security.MessageDigest;

public class MD5 {
  public static void main(String[] args) {
      System.out.println(oldencrypt("Dette er en test !"));
  }
  public static String oldencrypt(String pass) {
      try {
        MessageDigest md = MessageDigest.getInstance("MD5");
        return toHex(md.digest(pass.getBytes()));
      } catch (Exception e) {
        return null;
      }
  }
  private static String toHex(byte[] ba) {
      char hexdigit[] = { '0', '1', '2', '3', '4', '5', '6', '7',
                          '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };
      StringBuffer sb = new StringBuffer("");
      for (int i = 0; i < ba.length; i++) {
        sb.append(hexdigit[(ba[i] >> 4) & 0x0F]);
        sb.append(hexdigit[ba[i] & 0x0F]);
      }
      return sb.toString();
  }
}
Avatar billede di8leva Nybegynder
16. juni 2003 - 10:23 #2
Det virker perfekt og poinsten er dine.

Men hvorfor kaller du metoden oldencrypt? Er den gammal?

Og hvorfor kan man ikke bruge javax.crypto ?
Avatar billede arne_v Ekspert
16. juni 2003 - 10:34 #3
oldencrypt er noget copy paste fra en anden sammenhæng hvor jeg
skulle illustrere noget med to forskellige krypterings metoder.

Du kan bare omdøbe den til encrypt.
Avatar billede arne_v Ekspert
16. juni 2003 - 10:36 #4
javax.crypto er til "normal" kryptering. plain text -> cipher text
og cipher text -> plain text.
Avatar billede arne_v Ekspert
16. juni 2003 - 10:37 #5
Eksempel:

import java.security.Security;
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;

public class DES {
    private Cipher des;
    private SecretKey deskey;
    public DES(String key) {
        try {
            Security.addProvider(new com.sun.crypto.provider.SunJCE());
            des = Cipher.getInstance("DES/ECB/PKCS5Padding");
            deskey = new SecretKeySpec(key.getBytes(), "DES");
        } catch(Exception e) {
        }
    }
    private byte[] encrypt(byte[] plaindata) throws Exception {
        des.init(Cipher.ENCRYPT_MODE, deskey);
        return des.doFinal(plaindata);
    }
    private byte[] decrypt(byte[] cipherdata) throws Exception {
        des.init(Cipher.DECRYPT_MODE, deskey);
        return des.doFinal(cipherdata);
    }
    public static void main(String[] args) throws Exception {
        DES ec = new DES("hemmelig");
        String s1 = "Dette er en test";
        byte[] b1 = ec.encrypt(s1.getBytes());
        byte[] b2 = ec.decrypt(b1);
        String s2 = new String(b2);
        System.out.println(s2);
    }
}
Avatar billede di8leva Nybegynder
16. juni 2003 - 10:49 #6
meget udfylt svar

tak!!
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