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
Annonceindlæg fra HP
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(); } }
Det virker perfekt og poinsten er dine. Men hvorfor kaller du metoden oldencrypt? Er den gammal? Og hvorfor kan man ikke bruge javax.crypto ?
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.
javax.crypto er til "normal" kryptering. plain text -> cipher text og cipher text -> plain text.
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); } }
Kurser inden for grundlæggende programmering