In Main:
public static void main(String[] args) throws NoSuchAlgorithmException { System.out.println("encrypt:" + encryptPassword("superuser")+":" ); } public static String encryptPassword(final String password) throws NoSuchAlgorithmException { MessageDigest md = MessageDigest.getInstance("MD5"); byte[] hashPassword = md.digest(password.getBytes()); String encryPass = Base64.encodeBase64String(hashPassword); return encryPass; }
I'm getting this output:
encrypt:C66i8K4gFQ23j1jN2sRCqQ==:
But when I implemented the same thing in my application I'm getting the output below:
encrypt:C66i8K4gFQ23j1jN2sRCqQ== :
Note: new line appending on my encrypted string.
application code:
public boolean authenticateUsernamePasswordInternal(UsernamePasswordCredentials credentials) { try { System.out.println("encrypt:" + getHash("superuser")+":" ); } catch (Exception e) { logger.error(e.getMessage(), e); throw new BadCredentialsAuthenticationException(ErrorConstants.CONNECTION_FAILED); } } private String getHash(String password) throws NoSuchAlgorithmException, UnsupportedEncodingException{ MessageDigest md = MessageDigest.getInstance("MD5"); byte[] hashPassword = md.digest(password.getBytes()); String encryPass = Base64.encodeBase64String(hashPassword); return encryPass; }
How I can remove that extra new line. why this is happened, please help me what is the reason?
I may be late in answering this, but came across with same problem. Actually problem lies here Base64.encodeBase64String(hashPassword)
Change that line to look like this it should work: Base64.encodeBase64String(hashPassword,Base64.NO_WRAP)
By default the Android Base64 util adds a newline character to the end of the encoded string. The Base64.NO_WRAP flag tells the util to create the encoded string without the newline character.
Check here
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With