optional flag to allow using the standard base64 charset on decode/encode, rather than the (filename friendly) i2p charset
This commit is contained in:
@ -43,11 +43,14 @@ public class Base64 {
|
|||||||
private final static Log _log = new Log(Base64.class);
|
private final static Log _log = new Log(Base64.class);
|
||||||
|
|
||||||
public static String encode(byte[] source) {
|
public static String encode(byte[] source) {
|
||||||
return safeEncode(source);
|
return encode(source, false);
|
||||||
|
}
|
||||||
|
public static String encode(byte[] source, boolean useStandardAlphabet) {
|
||||||
|
return safeEncode(source, useStandardAlphabet);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static byte[] decode(String s) {
|
public static byte[] decode(String s) {
|
||||||
return safeDecode(s);
|
return safeDecode(s, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Maximum line length (76) of Base64 output. */
|
/** Maximum line length (76) of Base64 output. */
|
||||||
@ -315,10 +318,14 @@ public class Base64 {
|
|||||||
* Same as encodeBytes, except uses a filesystem / URL friendly set of characters,
|
* Same as encodeBytes, except uses a filesystem / URL friendly set of characters,
|
||||||
* replacing / with ~, and + with -
|
* replacing / with ~, and + with -
|
||||||
*/
|
*/
|
||||||
private static String safeEncode(byte[] source) {
|
private static String safeEncode(byte[] source, boolean useStandardAlphabet) {
|
||||||
String encoded = encodeBytes(source);
|
String encoded = encodeBytes(source);
|
||||||
encoded = encoded.replace('/', '~');
|
if (useStandardAlphabet) {
|
||||||
encoded = encoded.replace('+', '-');
|
// noop
|
||||||
|
} else {
|
||||||
|
encoded = encoded.replace('/', '~');
|
||||||
|
encoded = encoded.replace('+', '-');
|
||||||
|
}
|
||||||
return encoded;
|
return encoded;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -326,9 +333,14 @@ public class Base64 {
|
|||||||
* Same as decode, except from a filesystem / URL friendly set of characters,
|
* Same as decode, except from a filesystem / URL friendly set of characters,
|
||||||
* replacing / with ~, and + with -
|
* replacing / with ~, and + with -
|
||||||
*/
|
*/
|
||||||
private static byte[] safeDecode(String source) {
|
private static byte[] safeDecode(String source, boolean useStandardAlphabet) {
|
||||||
String toDecode = source.replace('~', '/');
|
String toDecode = null;
|
||||||
toDecode = toDecode.replace('-', '+');
|
if (useStandardAlphabet) {
|
||||||
|
toDecode = source;
|
||||||
|
} else {
|
||||||
|
toDecode = source.replace('~', '/');
|
||||||
|
toDecode = toDecode.replace('-', '+');
|
||||||
|
}
|
||||||
return standardDecode(toDecode);
|
return standardDecode(toDecode);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user