new line appending on my encrypted string
base64, encryption, java
Solution
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
Problem
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?