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?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…