yes you are right.I've corrected both.Thank you :)
You're still doing it wrong. Look at the last line of my code snippet.
The code you've used will encode to hex bytes in UTF-8, but then you turn that into a string with the platform default character set, which may not be compatible (eg: any double-byte encoding). Use the method that Hex provides. If you really need to you can do new String(bytes, hex.getCharEncoding()), but it's needless complexity.
Also, your conversion from strings to bytes and back is just wrong - this will not work as expected when run on machines with a different platform encoding. This is a real problem when writing security code - I've seen code that attempted to get the bytes from passwords on a japanese website in ISO-8859-1, effectively making all passwords of the same length the same value.