Titre: [JAVA] Cryptage MD5 Posté par: jpdelx sur 18 Novembre 2009 à 07:26:46 Bonjour
Code: //AeSimpleMD5.java import java.io.UnsupportedEncodingException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class AeSimpleMD5 { private static String convertToHex(byte[] data) { StringBuffer buf = new StringBuffer(); for (int i = 0; i < data.length; i++) { int halfbyte = (data >>> 4) & 0x0F; int two_halfs = 0; do { if ((0 <= halfbyte) && (halfbyte <= 9)) buf.append((char) ('0' + halfbyte)); else buf.append((char) ('a' + (halfbyte - 10))); halfbyte = data & 0x0F; } while(two_halfs++ < 1); } return buf.toString(); } public static String MD5(String text) throws NoSuchAlgorithmException, UnsupportedEncodingException { MessageDigest md; md = MessageDigest.getInstance("MD5"); byte[] md5hash = new byte[32]; md.update(text.getBytes("iso-8859-1"), 0, text.length()); md5hash = md.digest(); return convertToHex(md5hash); } } Code: //ex01.java @lpfimport java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.UnsupportedEncodingException; import java.security.NoSuchAlgorithmException; public class ex01 { public static void main(String[] args) throws IOException { BufferedReader userInput = new BufferedReader (new InputStreamReader(System.in)); System.out.println("Enter string:"); String rawString = userInput.readLine(); try { System.out.println("MD5 hash of string: " + AeSimpleMD5.MD5(rawString)); } catch (NoSuchAlgorithmException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } (http://jpdelx.free.fr/bas.gif) Titre: [JAVA] Cryptage MD5 Posté par: Sébastien PICAVET sur 18 Novembre 2009 à 11:03:23 Citation de: jpdelx sur 18 Novembre 2009 à 07:26:46 Code: int halfbyte = (data >>> 4) & 0x0F; Qu’est-ce que fait cette ligne ? Titre: [JAVA] Cryptage MD5 Posté par: jpdelx sur 18 Novembre 2009 à 11:13:16 Sébastien
>>> : il s'agit d'un décalage de bits à droite ! [ en savoir + (http://www.commentcamarche.net/contents/java/javaop.php3) ] :P & 0x0F : il s'agit d'un "ET" binaire [ en savoir + (http://forums.sun.com/thread.jspa?threadID=5241671) ] :P x 2 Extraction des 4 bits de poids forts ? C'est sur ce genre de "détail" qu'on s'aperçoit que la codification en Langage C sert à quelque chose ! ;) @lpf PS : http://en.wikipedia.org/wiki/Bitwise_operation Titre: [JAVA] Cryptage MD5 Posté par: Sébastien PICAVET sur 18 Novembre 2009 à 11:42:43 C’est surtout le « >>> » qui me laissait perplexe. Je connaissais l’écriture hexadécimale et la comparaison bit-à-bit.
C’est sûr que l’on ne rencontre que rarement cette écriture en Java. Titre: [JAVA] Cryptage MD5 Posté par: jpdelx sur 18 Novembre 2009 à 11:46:54 Sébastien
Cela dépend beaucoup du domaine des applications : en informatique de gestion, c'est plutôt rare. Dans celui ( par exemple ) de la programmation des réseaux, c'est plus courant :) @lpf J.Phil.
e-Babillard - plateforme pédagogique interactive | Propulsé par SMF 1.0.6 modifié par jpdelx.
© 2001-2005, Lewis Media. Tous droits réservés. |