https://web.archive.org/web/20110422225659/https://en.wikipedia.org/wiki/Base64#URL_applications
浅谈base64Url解码
存在修改后的URL变量Base64,不使用填充'=‘,标准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;
}
它返回一个非常小的字符集,这些字符集甚至与预期结果并不相似。有什么想法吗?
发布于 2011-04-13 05:23:48
通过使用来自Apache Commons的Base64
,我创建了以下函数:
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;
}
构造函数Base64(true)
使得解码是安全的。
发布于 2016-07-10 06:54:02
Java8+
import java.util.Base64;
return Base64.getUrlEncoder().encodeToString(bytes);
发布于 2015-03-27 17:29:45
从Java8开始,Base64编码就是JDK的一部分。java.util.Base64.getUrlEncoder()也支持URL safe encoding,可以通过额外使用java.util.Base64.Encoder.withoutPadding()方法跳过"=
“填充:
import java.nio.charset.StandardCharsets;
import java.util.Base64;
public String encode(String raw) {
return Base64.getUrlEncoder()
.withoutPadding()
.encodeToString(raw.getBytes(StandardCharsets.UTF_8));
}
https://stackoverflow.com/questions/5641303
复制相似问题