Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [MessageDigest] encrypt a String

    Ciao a tutti, sto provando a fare l'encoding di una stringa in un algoritmo MD5 e di salvarla successivamente nel database.
    Qualcosa però non mi torna nel risultato:
    19:57:29,052 DEBUG [Encryptor] [byteToString] the String: �Ǘ����Ϗ�Y
    il mio codice:
    public static byte[] encrypt(String data, String algorithm)
    throws NoSuchAlgorithmException {
    return encryptor(data.getBytes(),algorithm);
    }


    private static byte[] encryptor(byte[] obj, String algorithm)
    throws NoSuchAlgorithmException {
    MessageDigest msgd = MessageDigest.getInstance(algorithm);
    msgd.reset();
    msgd.update(obj);
    return msgd.digest();

    }

    public static String byteToString(byte[] arr){
    String s = null;
    try {
    s = new String( arr, "UTF-8" );
    } catch (UnsupportedEncodingException ex) {
    logger.debug("[byteToString] ",ex);
    }
    s.replaceAll( " ", "" );
    logger.debug("[byteToString] the String: "+s);
    return s;
    }

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [MessageDigest] encrypt a String

    Originariamente inviato da Sandrocchio_0.1
    return encryptor(data.getBytes(),algorithm);

    s = new String( arr, "UTF-8" );
    Ma scusa eh, se dai byte ricrei una stringa usando come charset UTF-8, devi usare lo stesso charset con getBytes()!!!!!
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    scusa ma io non sono molto ferrato in materia, ho bsisogno soltanto di fare il digest di un stringa (password) e di salvarla sul database in maniera che sia disponibile per confronti da parte del REALM
    Ho provato ad usare la jakarta-commons-codec

    public static String byteToString(byte[] arr){
    arr = Base64.encodeBase64(arr);
    String encodedString = new String(arr);
    logger.debug("[byteToString] encoded String: "+encodedString);
    return encodedString;
    }

    iceXArQRoLicz4+OAVkPDA==
    però non sono convinto di essere riuscito nel mio intento. Tuttavia ho trovato un metodo md5Hex(byte[] data) che ritorna 32 character hex.
    Quale secondo te, dovrei usare? Qual'è la differenza sostanziale?

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Sandrocchio_0.1
    scusa ma io non sono molto ferrato in materia, ho bsisogno soltanto di fare il digest di un stringa (password) e di salvarla sul database in maniera che sia disponibile per confronti da parte del REALM
    Innanzitutto mi scuso subito perché non avevo letto bene e per intero il tuo codice e quindi avevo capito un'altra cosa .....

    Tu hai un array di 'tot' bytes e vuoi ottenere una stringa con la rappresentazione in esadecimale di quei byte, giusto? Cioè se hai un byte 0x4A, vuoi che nella stringa ci siano i caratteri '4' e 'A'.
    In questo caso non si deve fare new String(arr, "UTF-8"); perché così i byte sarebbero interpretati come codici di caratteri (0x4A diventerebbe il carattere 'J') e non come detto sopra.

    Devi proprio formattare appositamente ogni singolo byte e aggiungere alla stringa 2 caratteri per ogni byte. Usando le nuove funzionalità di Java 5 si può fare così:

    codice:
    public static String bytesToHexString (byte[] data)
    {
        if (data == null)
            throw new NullPointerException ("parameter 'data' cannot be null");
    
        StringBuilder sb = new StringBuilder (data.length*2);
    
        for (byte d: data)
            sb.append (String.format ("%02X", d & 0xFF));
    
        return sb.toString ();
    }
    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 © 2025 vBulletin Solutions, Inc. All rights reserved.