With 3.11.x the behavior for Base64.decode changed, previously it would 
seamlessly handle both urlSafe and standard modes.

As still documented in the constructor Base64(int lineLength, byte[] 
lineSeparator, final boolean urlSafe)

"@param urlSafe Instead of emitting '+' and '/' we emit '-' and '_' 
respectively. urlSafe is only applied to encode operations. Decoding seamlessly 
handles both modes."



The following now throws IllegalArgumentException: Illegal base64 character 2d

boolean urlSafe = false;
String encoded = "o6wBF2p1dwkzJbXY+vUaAg==";
final byte[] bytesToEncode = new Base64(0, new byte[] {}, 
false).decode(encoded);
urlSafe = true;
String encodedUrlSafe = new Base64(0, new byte[] {}, 
true).encodeToString(bytesToEncode);

final byte[] decoded = new Base64(0, new byte[] {}, 
false).decode(encodedUrlSafe);

Revisions before this commit still have the expected behavior: 
https://github.com/apache/commons-net/commit/deb24bf22b1f75e4dc1bc981f2bcd37f5c407ceb


Although Base64 is deprecated, its behavior should not change.

Thanks, 
Alexander

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscr...@commons.apache.org
For additional commands, e-mail: user-h...@commons.apache.org

Reply via email to