有谁知道如何使用 Base64 解码和编码 Base64 中的字符串?

新手上路,请多包涵

我正在使用以下代码,但它不起作用。

 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)));

原文由 max 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 598
2 个回答

第一的:

  • 选择一种编码。 UTF-8 通常是一个不错的选择;坚持一种对双方都有效的编码。很少使用 UTF-8 或 UTF-16 以外的东西。

发射端:

  • 将字符串编码为字节(例如 text.getBytes(encodingName)
  • 使用 Base64 类将字节编码为 base64
  • 传输base64

接收端:

  • 接收base64
  • 使用 Base64 类将 base64 解码为字节
  • 将字节解码为字符串(例如 new String(bytes, encodingName)

所以像:

 // Sending side
byte[] data = text.getBytes("UTF-8");
String base64 = Base64.encodeToString(data, Base64.DEFAULT);

// Receiving side
byte[] data = Base64.decode(base64, Base64.DEFAULT);
String text = new String(data, "UTF-8");

或者使用 StandardCharsets

 // Sending side
byte[] data = text.getBytes(StandardCharsets.UTF_8);
String base64 = Base64.encodeToString(data, Base64.DEFAULT);

// Receiving side
byte[] data = Base64.decode(base64, Base64.DEFAULT);
String text = new String(data, StandardCharsets.UTF_8);

原文由 Jon Skeet 发布,翻译遵循 CC BY-SA 3.0 许可协议

对于 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())

原文由 brunql 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题