Хорошо, я знаю, как это сделать на C #.
Это очень просто:
Convert.ToBase64String(byte[])
and Convert.FromBase64String(string) to get byte[] back.
Как я могу сделать это на Java?
Кодировать или декодировать байтовые массивы:
byte[] encoded = Base64.getEncoder().encode("Hello".getBytes());
println(new String(encoded)); // Outputs "SGVsbG8="
byte[] decoded = Base64.getDecoder().decode(encoded);
println(new String(decoded)) // Outputs "Hello"
Или, если вам просто нужны строки:
String encoded = Base64.getEncoder().encodeToString("Hello".getBytes());
println(encoded); // Outputs "SGVsbG8="
String decoded = new String(Base64.getDecoder().decode(encoded.getBytes()));
println(decoded) // Outputs "Hello"
Для получения дополнительной информации см. Base64 .
Base64 не поставляется с версиями Java ниже 8. Я рекомендую использовать кодек Apache Commons .
Для прямых байтовых массивов:
Base64 codec = new Base64();
byte[] encoded = codec.encode("Hello".getBytes());
println(new String(encoded)); // Outputs "SGVsbG8="
byte[] decoded = codec.decode(encoded);
println(new String(decoded)) // Outputs "Hello"
Или, если вам просто нужны строки:
Base64 codec = new Base64();
String encoded = codec.encodeBase64String("Hello".getBytes());
println(encoded); // Outputs "SGVsbG8="
String decoded = new String(codec.decodeBase64(encoded));
println(decoded) // Outputs "Hello"
Если вы уже работаете над проектом Spring, вы можете найти их org.springframework.util.Base64Utils
класс более эргономичным:
Для прямых байтовых массивов:
byte[] encoded = Base64Utils.encode("Hello".getBytes());
println(new String(encoded)) // Outputs "SGVsbG8="
byte[] decoded = Base64Utils.decode(encoded);
println(new String(decoded)) // Outputs "Hello"
Или, если вам просто нужны строки:
String encoded = Base64Utils.encodeToString("Hello".getBytes());
println(encoded); // Outputs "SGVsbG8="
String decoded = Base64Utils.decodeFromString(encoded);
println(new String(decoded)) // Outputs "Hello"
Если вы используете Android SDK до Java 8, лучшим вариантом будет использование пакета android.util.Base64
.
Для прямых байтовых массивов:
byte[] encoded = Base64.encode("Hello".getBytes());
println(new String(encoded)) // Outputs "SGVsbG8="
byte [] decoded = Base64.decode(encoded);
println(new String(decoded)) // Outputs "Hello"
Или, если вам просто нужны строки:
String encoded = Base64.encodeToString("Hello".getBytes());
println(encoded); // Outputs "SGVsbG8="
String decoded = new String(Base64.decode(encoded));
println(decoded) // Outputs "Hello"
Использование:
byte[] data = Base64.encode(base64str);
Кодировка преобразуется в Base64
Вам нужно будет сослаться на кодек commons из вашего проекта, чтобы этот код работал.
Для java8 :
import java.util.Base64
Кроме того, для наших друзей по Android (уровень API 8):
источник
Если вы используете Spring framework вместе с java, есть простой способ.
Импортируйте следующее.
Преобразуйте вот так.
Для декодирования вы можете использовать метод decodeToString класса Base64Utils.
источник