Was führt dieser Code aus

  • Themenstarter Themenstarter ricardoh
  • Beginndatum Beginndatum
R

ricardoh

Gast
Weis jemand was diese Klasse macht?

Java:
public class rg
{

    public static String a(String s)
    {
        return a(s.getBytes());
    }

    public static String a(byte abyte0[])
    {
        String s = null;
        try
        {
            MessageDigest messagedigest = MessageDigest.getInstance(MD5);
            messagedigest.update(abyte0);
            s = b(messagedigest.digest());
            messagedigest.reset();
        }
        catch(NoSuchAlgorithmException nosuchalgorithmexception)
        {
            // ...
        }
        return s;
    }

    public static String b(byte abyte0[])
    {
        boolean flag = sg.k;
        StringBuilder stringbuilder = new StringBuilder(32);
        int i = 0;
        do
        {
            if(i >= abyte0.length)
                break;
            int j = abyte0[i] & 0xff;
            if(j < 16)
                stringbuilder.append("0");
            stringbuilder.append(Integer.toHexString(j));
            i++;
        } while(!flag);
        return stringbuilder.toString();
    }

}
 
Berechnet, wenn die Fehler rausgemacht werden, den MD5 Message Digest zu einem String.

Diese Implementierung würde ich aber niemanden zeigen 😳

MD5("admin")=21232f297a57a5a743894a0e4a801fc3
 
Java:
    public static String b(byte abyte0[])
    {
        boolean flag = sg.k;
        StringBuilder stringbuilder = new StringBuilder(32);
        int i = 0;
        do
        {
            if(i >= abyte0.length)
                break;
            int j = abyte0[i] & 0xff;
            if(j < 16)
                stringbuilder.append("0");
            stringbuilder.append(Integer.toHexString(j));
            i++;
        } while(!flag);
        return stringbuilder.toString();
    }

Hmm ok jedoch bringt mich dieser Code zur Verzfleiflung wege dem "Integer.toHexString" und "0xff" als währe es mehr als nur MD5
 
Das 0xff ist wegen der automatischen Typkonvertierung in Java.
Nehmen wir an wir haben ein "byte a = -1;" dann ist das binär 11111111, Byte hat ja nur 8 Bit. Wennn man das jetzt einem Integer zuweist, 32 Bit, dann hat dieser binär 11111111111111111111111111111111, was umgeandelt auch -1 entspricht. Durch das Verunden mit 0xff hat der Integer stattdessen dann 00000000000000000000000011111111 als Wert, also 255.
 

Zurück
Oben