http://en.wikipedia.org/wiki/Base64#URL_applications
谈论base64Url - 解码
存在修改后的Base64 for URL变体,其中不使用填充'=',标准Base64的'+'和'/'字符分别替换为' - '和'_'
我创建了以下功能:
public static String base64UrlDecode(String input) {
String result = null;
BASE64Decoder decoder = new BASE64Decoder();
try {
result = decoder.decodeBuffer(input.replace('-','+').replace('/','_')).toString();
}
catch (IOException e) {
System.out.println(e.getMessage());
}
return result;
}
Run Code Online (Sandbox Code Playgroud)
它返回一组非常小的字符,甚至与预期的结果不相似.有任何想法吗?
Bor*_*hov 61
Java8 +
import java.util.Base64;
return Base64.getUrlEncoder().encodeToString(bytes);
Run Code Online (Sandbox Code Playgroud)
ufk*_*ufk 23
通过使用Base64Apache Commons,可以配置为URL安全,我创建了以下功能:
import org.apache.commons.codec.binary.Base64;
public static String base64UrlDecode(String input) {
String result = null;
Base64 decoder = new Base64(true);
byte[] decodedBytes = decoder.decode(input);
result = new String(decodedBytes);
return result;
}
Run Code Online (Sandbox Code Playgroud)
构造函数Base64(true)使解码URL安全.
dea*_*mon 22
自Java 8以来,Base64编码是JDK的一部分.还支持URL安全编码.
import java.nio.charset.StandardCharsets;
import java.util.Base64;
public String encode(String raw) {
return Base64.getUrlEncoder()
.withoutPadding()
.encodeToString(raw.getBytes(StandardCharsets.UTF_8));
}
Run Code Online (Sandbox Code Playgroud)
public static byte[] encodeUrlSafe(byte[] data) {
byte[] encode = Base64.encode(data);
for (int i = 0; i < encode.length; i++) {
if (encode[i] == '+') {
encode[i] = '-';
} else if (encode[i] == '/') {
encode[i] = '_';
}
}
return encode;
}
public static byte[] decodeUrlSafe(byte[] data) {
byte[] encode = Arrays.copyOf(data, data.length);
for (int i = 0; i < encode.length; i++) {
if (encode[i] == '-') {
encode[i] = '+';
} else if (encode[i] == '_') {
encode[i] = '/';
}
}
return Base64.decode(encode);
}
Run Code Online (Sandbox Code Playgroud)
在Android SDK中,类中有一个专用标志Base64:Base64.URL_SAFE,使用它来解码为String:
import android.util.Base64;
byte[] byteData = Base64.decode(body, Base64.URL_SAFE);
str = new String(byteData, "UTF-8");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
59058 次 |
| 最近记录: |