question: static public String hexEncode ( byte [ ] aInput ) { StringBuffer result = new StringBuffer ( ) ; final char [ ] digits = { '0' , '1' , '2' , '3' , '4' , '5' , '6' , '7' , '8' , '9' , 'a' , 'b' , 'c' , 'd' , 'e' , 'f' } ; for ( int idx = 0 ; idx < aInput . length ; ++ idx ) { byte b = aInput [ idx ] ; result . append ( digits [ ( b & 0xf0 ) > > 4 ] ) ; result . append ( digits [ b & 0x0f ] ) ; } return result . toString ( ) ; }
target:  The byte[] returned by MessageDigest does not have a nice textual representation, so some form of encoding is usually performed. This implementation follows the example of David Flanagan's book "Java In A Nutshell", and converts a byte array into a String of hex characters. Another popular alternative is to use a "Base64" encoding.