I am trying to generate MD5 sum using MessageDigest.
And i am having following code. 

```
byte[] md5sum = digest.digest();
BigInteger bigInt = new BigInteger(1, md5sum);
output = bigInt.toString(16);

```

This returns not 32 character string but a 31 character string `8611c0b0832bce5a19ceee626a403a7`

Expected String is `08611c0b0832bce5a19ceee626a403a7`

Leading 0 is missing in the output.

I tried the other method 

```
byte[] md5sum = digest.digest();
output = new String(Hex.encodeHex(md5sum));

```

And the output is as expected.

I checked the doc and Integer.toString does the conversion according to it

> 
> The digit-to-character mapping provided by Character.forDigit is
>  used, and a minus sign is prepended if appropriate.
> 
> 
> 

and in Character.forDigit methos

> 
> The digit argument is valid if 0 <=digit < radix.
> 
> 
> 

Can some one tell me how two methods are different and why leading 0 is deleted?