Zdravím, je na to „zkratka" Jakarta Commons Codec –
http://commons.apache.org/codec/ a statické metody její třídy
org.apache.commons.codec.binary.Base64. Otázka je, zda se vám kvůli
tomu vyplatí přidávat závislost na nové knihovně. U toho kódy, který
máte vy, bych si dal pozor na bajty v rozsahu 0x00 až 0x0F – aby se
vypsala i ta úvodní nula. No a pak by se to dalo napsat mnohem
efektivněji – není potřeba pro každý bajt vytvářet nový objekt Byte,
parsovat formátovací řetězec, skládat výsledek do řetězce a ten pak
zase přidat do StringBuilderu. Rychlejší by asi bylo použít bitový
posun a switch nebo pole.
Filip Jirsák
24.1.08, Ondra Zizka <[EMAIL PROTECTED]>:
> Ahoj,
>
> chtěl bych převést byte[] (MD5 hash) na String reprezentaci pomocí hex
> číslic.
> Je na to nějaká zkratka? Ať to nemusím dělat ručně:
>
> MessageDigest md = MessageDigest.getInstance("MD5");
> String sPassword = "ahojlidi";
> byte[] acPassword = sPassword.getBytes();
> byte[] acHash = md.digest( "ahojlidi".getBytes() );
> StringBuilder sb = new StringBuilder(32);
> for( byte b : acHash ){
> sb.append( String.format("%x", new Byte(b)) );
> }
> System.out.println( sb.toString() );
>
> Přijde mi to takhle dost rozpovídané na to, že např. v PHP (ze kterého
> přecházím) je to jen md5("ahojlidi") a v Pythonu
> "md5.new('ahojlidi').hexdigest()".
> Tak doufám, že jsem snad jen přehlédl nějakou metodu md.getDigestAsHex(),
> jelikož je to asi nejčastější reprezentace MD5 a naprosto každý ji jistě
> hledá.
> Chápu, že to není ideologicky čisté, ale "let's not be insane".
>
> Díky, Ondra
>
>
>
>
--
Filip Jirsák
[EMAIL PROTECTED]