Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2003
    Messaggi
    9

    [JAVA] codificare in base64

    Ciao a tutti, essesimo problema: io codifico le password con SHA-256 che, con le classi di Java MessageDigest che però come risultato mi sfornano un array di byte, a me invece serve una stringa che rappresenti la chiave in base 64.
    Ho cercato delle classi per la conversione in base 64 ma ho trovato solo classi che convertono una stringa in un'altra stringa che rappresenta il numero in base 64, io invece devo elaborare l'array di byte in stringa rappresentante la base64.
    Ho anche cercato un programmino esterno che codifichi delle stringhe e me le faccia vedere in base 64 (giusto per vedere il risultato, per vedere se quello che faccio è giusto) ma ho trovato solo prog che rendono stringhe in essadecimale.

    Se qualcuno riesce ad essermi d'aiuto . . .
    grazie in anticipo.

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

    Re: [JAVA] codificare in base64

    Originariamente inviato da pro_sid
    Ciao a tutti, essesimo problema: io codifico le password con SHA-256 che, con le classi di Java MessageDigest che però come risultato mi sfornano un array di byte, a me invece serve una stringa che rappresenti la chiave in base 64.
    Ho cercato delle classi per la conversione in base 64 ma ho trovato solo classi che convertono una stringa in un'altra stringa che rappresenta il numero in base 64, io invece devo elaborare l'array di byte in stringa rappresentante la base64.
    Ho anche cercato un programmino esterno che codifichi delle stringhe e me le faccia vedere in base 64 (giusto per vedere il risultato, per vedere se quello che faccio è giusto) ma ho trovato solo prog che rendono stringhe in essadecimale.

    Se qualcuno riesce ad essermi d'aiuto . . .
    grazie in anticipo.
    Di classi per fare l'encode/decode in Base64 ne trovi sicuramente a quintali se fai una ricerca in rete. Io comunque posto la mia personale soluzione che, a meno di errori particolari, dovrebbe essere corretta.

    codice:
    public class Base64Code
    {
        private static char[] alphabet =
        {
            'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H',
            'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P',
            'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X',
            'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f',
            'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n',
            'o', 'p', 'q', 'r', 's', 't', 'u', 'v',
            'w', 'x', 'y', 'z', '0', '1', '2', '3',
            '4', '5', '6', '7', '8', '9', '+', '/'
        };
    
        private static char padding = '=';
    
        public static char[] encodeChar (byte[] data)
        {
            if (data == null)
                throw new NullPointerException ("'data' parameter cannot be null");
    
            int i = 0, j = 0, len = data.length, tmp;
    
            char[] buf = new char[4*((len*8+23)/24)];
    
            while (len > 0)
            {
                tmp = (data[i++] & 0xFF) << 16;
                if (len >= 2)
                    tmp |= (data[i++] & 0xFF) << 8;
                if (len >= 3)
                    tmp |= data[i++] & 0xFF;
    
                buf[j++] = alphabet[tmp >>> 18];
                buf[j++] = alphabet[tmp >>> 12 & 63];
                buf[j++] = len >= 2 ? alphabet[tmp >>> 6 & 63] : padding;
                buf[j++] = len >= 3 ? alphabet[tmp & 63] : padding;
    
                len -= 3;
            }
    
            return buf;
        }
    
        public static String encodeString (byte[] data)
        {
            return new String (encodeChar (data));
        }
    }
    Non ho fatto il decode ... semplicemente perché sono pigro.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java 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 © 2024 vBulletin Solutions, Inc. All rights reserved.