Visualizzazione dei risultati da 1 a 10 su 16

Hybrid View

  1. #1
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Il "minimo" per fare la cosa corretta e un pochino pulita (ma si potrebbe fare ancora meglio!) può essere questo, scritto e provato al volo:

    codice:
    public class DigestUtils {
        private DigestUtils() {}
    
        public static String md5Hex(String str) throws NoSuchAlgorithmException {
            MessageDigest md = MessageDigest.getInstance("MD5");
            byte[] digest = md.digest(utf8Bytes(str));
            BigInteger number = new BigInteger(1, digest);
            return String.format("%032x", number);
        }
    
        private static byte[] utf8Bytes(String str) {
            try {
                return str.getBytes("UTF-8");
            } catch (UnsupportedEncodingException e) {
                throw new Error("Grave error, UTF-8 not supported!");
            }
        }
    }
    Andrea, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  2. #2
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Il "minimo" per fare la cosa corretta e un pochino pulita (ma si potrebbe fare ancora meglio!) può essere questo, scritto e provato al volo:

    codice:
    public class DigestUtils {
        private DigestUtils() {}
    
        public static String md5Hex(String str) throws NoSuchAlgorithmException {
            MessageDigest md = MessageDigest.getInstance("MD5");
            byte[] digest = md.digest(utf8Bytes(str));
            BigInteger number = new BigInteger(1, digest);
            return String.format("%032x", number);
        }
    
        private static byte[] utf8Bytes(String str) {
            try {
                return str.getBytes("UTF-8");
            } catch (UnsupportedEncodingException e) {
                throw new Error("Grave error, UTF-8 not supported!");
            }
        }
    }
    Cosa significa “%032x”?
    Cosa significa “1”? Perché semplicemente non “BigInteger(digest)”?
    Si converte tutto in Byte perché digest() vuole così, giusto?
    Più pratica in futuro...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.