In Main:
public static void main(String[] args) throws NoSuchAlgorithmException {
System.out.println(\"encrypt:\" + encryptPassword(\"superuser\")+\":\"
It depends on the implementation of Base64.encodeBase64String()
. What is that method?
If it's from Apache commons, be aware that there are a few different classes that handle whitespace differently.
For example, org.apache.commons.net.util.Base64 chunks output, and it probably adds a CR-LF sequence to the final chunk.
The more common version, org.apache.commons.codec.binary.Base64, does not add whitespace.
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
In case anyone needs this for any libraries using OkHttp, there's a Credentials
class you can use for Base64 encoding your username/pass
String credentials = Credentials.basic("username", "password");
request.header(HttpHeaders.AUTHORIZATION, credentials);
A cleaner option without trimming:
String encryPass = BaseEncoding.base64().encode(hashPassword);
You just need to Use Base64 encoding in following way
Base64.encodeBase64String("Your data to encrypt in base64", Base64.DEFAULT)
Change above line with the followings
Base64.encodeBase64String("Your data to encrypt in base64",Base64.NO_WRAP)
It worked for me.
Use:
String encryPass = Base64.encodeBase64String(hashPassword).trim();