我正在使用下面的代码,但它不起作用。
String source = "password";
byte[] byteArray = source.getBytes("UTF-16");
Base64 bs = new Base64();
//bs.encodeBytes(byteArray);
System.out.println(bs.encodeBytes(byteArray));
//bs.decode(bs.encodeBytes(byteArray));
System.out.println(bs.decode(bs.encodeBytes(byteArray)));
以上的许多答案对我来说都不适用,其中一些并没有以正确的方式处理异常。在这里我添加了一个完美的解决方案,对我来说是惊人的,对你也一样。
//base64 decode string
String s = "ewoic2VydmVyIjoic2cuenhjLmx1IiwKInNuaSI6InRlc3RpbmciLAoidXNlcm5hbWUiOiJ0ZXN0
ZXIiLAoicGFzc3dvcmQiOiJ0ZXN0ZXIiLAoicG9ydCI6IjQ0MyIKfQ==";
String val = a(s) ;
Toast.makeText(this, ""+val, Toast.LENGTH_SHORT).show();
public static String a(String str) {
try {
return new String(Base64.decode(str, 0), "UTF-8");
} catch (UnsupportedEncodingException | IllegalArgumentException unused) {
return "This is not a base64 data";
}
}
对于Kotlin mb更好的使用:
fun String.decode(): String {
return Base64.decode(this, Base64.DEFAULT).toString(charset("UTF-8"))
}
fun String.encode(): String {
return Base64.encodeToString(this.toByteArray(charset("UTF-8")), Base64.DEFAULT)
}
例子:
Log.d("LOGIN", "TEST")
Log.d("LOGIN", "TEST".encode())
Log.d("LOGIN", "TEST".encode().decode())