Visualizzazione dei risultati da 1 a 10 su 30

Hybrid View

  1. #1
    Mi piaceva molto il codice di schumy ma non sono riuscito a farlo funzionare così ho provato questo che ho trovato su internet:

    codice:
    package prova;
    
    import java.math.BigInteger;
    import java.security.MessageDigest;
    import java.security.NoSuchAlgorithmException;
    
    class Esempio {
    
        public static String getMD5(String input) {
            try {
                MessageDigest md = MessageDigest.getInstance("MD5");
                byte[] messageDigest = md.digest(input.getBytes());
                BigInteger number = new BigInteger(1, messageDigest);
                String hashtext = number.toString(16);
                while (hashtext.length() < 32) {
                    hashtext = "0" + hashtext;
                }
                return hashtext;
            } catch (NoSuchAlgorithmException e) {
                throw new RuntimeException(e);
            }
         }
    
        public static void main(String[] args) throws NoSuchAlgorithmException {
            System.out.println(getMD5("gianni"));
        }
    }

    che però trovo poco chiaro e anche parecchio complesso.

    http://www.asjava.com/core-java/java-md5-example/

    il codice funziona, l'ho già testato.

    Grazie mille a tutti
    Più pratica in futuro...

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da giannino1995 Visualizza il messaggio
    Mi piaceva molto il codice di schumy ma non sono riuscito a farlo funzionare
    Se ti riferisci al codice che lui ha postato nella risposta #6, sappi che quella classe MD5Encrypter non fa parte del framework standard .... è sicuramente di una libreria esterna ma quale non lo so .... dovrei cercare.

    Quote Originariamente inviata da giannino1995 Visualizza il messaggio
    così ho provato questo che ho trovato su internet:
    [...]
    che però trovo poco chiaro e anche parecchio complesso.
    Allora: MessageDigest è la classe nel package della security di Java SE, quindi questa è la API "standard" e basilare che si può usare.
    Tra l'altro l'API della security è basata sul concetto di "provider" ed è "pluggabile", cioè si possono agganciare provider esterni che forniscono i vari servizi di MessageDigest, SecureRandom, Signature, ecc...

    Qualunque altra API o libreria esterna per il message digest può: o basarsi su MessageDigest, incapsulando i dettagli tecnici e fornendo una API semplificata (façade) oppure reimplementare da zero l'algoritmo di digest con la sua propria API.

    Comunque, a parte queste disquisizioni, quel codice che hai postato non è affatto complicato (se ti "preoccupi" per una manciata di righe ..... ). L'unica cosa che mi sembra un pochettino fuori luogo è tirare in ballo BigInteger solo per ottenere la formattazione in esadecimale.
    Si può fare in modi più semplici e pure più leggibili, ad esempio da Java 5 sfruttando la nuova funzionalità di formattazione delle stringhe componendo la stringa con un loop in cui formatti ciascun byte con String.format("%02X", byte_iesimo)
    E questa formattazione da byte[] a String si può anche incapsulare in un metodo apposito, in modo da rendere il tutto ancora più semplice e leggibile!

    La cosa importante però riguarda il charset della sequenza di byte ottenuta dal String. getBytes() usa il charset predefinito della piattaforma, che può variare appunto da un S.O. all'altro. In questi casi bisogna sempre imporre un charset valido e ben preciso, in modo che tutto quanto sia "stabile" e indipendente dalla piattaforma. Quindi es. getBytes("UTF-8") .
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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.