24. maj 2010 - 22:33
Der er
8 kommentarer
MD5 kodeforklaring
Er der nogle venligst en der kan forklare mig hvordan den her MD5-kode virker og hvad den helt præcist gør :)? public class MD5Calc { private String md5val; public MD5Calc (String pass) throws NoSuchAlgorithmException{ md5val = md5(pass); } public static String md5(String s) throws NoSuchAlgorithmException { MessageDigest md = MessageDigest.getInstance("MD5"); return toHex(md.digest(s.getBytes())); } 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(); } @Override public String toString() { return md5val; } }
Annonceindlæg tema
Forsvar & beredskab
Cybersikkerhed, realtidsdata og robuste it-systemer er blevet fundamentet for moderne forsvar.
Det var vist noget kode der blev bixet her for en maanedstid siden ikke?
Men koden er ikke saa svaer: en constructor som beregner MD5 af password og gemmer i et field en metode som beregner MD5 via den indbyggede suppport i Java en metode til at konvertere et byte array til en hex string en toString metode saa objekter kan udskrives uden videre
Jo det var det, men det er fordi vi skal sidde og lave nogle klassebeskrivelser, så derfor er det meget godt at vide lidt om det :) Men kan du forklare nærmere om toHex-metoden? private static String toHex(byte[] ba) { char hexdigit[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' }; - Her flyder man char arrayet op med de følgenede elementer? - Hvad gør en StringBuffer sb = new StringBuffer(""); , præcist? for (int i = 0; i < ba.length; i++) { sb.append(hexdigit[(ba[i] >> 4) & 0x0F]); sb.append(hexdigit[ba[i] & 0x0F]); } - Hvad er det præcist der sker i denne forløkkke?
hexdigit er de 16 cifre i 16 tals systemet StringBuffer (siden 2004 burde man nok ioevrigt bruge StringBuilder) bruges til at opsamle hex cifrene. Hver byte bliver til to hex cifre. De fire high bits og de fire low bits.
Og hvad siger du de 4 high og low bits er?
(ba[i] >> 4) & 0x0F giver de 4 hoejeste bits ba[i] & 0x0F giver de 4 laveste bits
Hvis det er for forvirrende, saa brug Integer.toHexString metoden i.s.f. !
Kurser inden for grundlæggende programmering