Введение
В этом практическом занятии мы научимся кодировать и декодировать данные в формате Base64 на Java с использованием класса java.util.Base64
и библиотеки Apache Commons.
💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал
В этом практическом занятии мы научимся кодировать и декодировать данные в формате Base64 на Java с использованием класса java.util.Base64
и библиотеки Apache Commons.
В этом шаге вы создадите новый Java-файл. Откройте терминал и выполните следующую команду, чтобы создать новый Java-файл:
touch ~/project/Base64Encoding.java
Эта команда создаст новый файл с именем Base64Encoding.java
внутри каталога ~/project
. Вы можете использовать любое предпочтительное имя, но убедитесь, что оно заканчивается на .java
.
В этом шаге мы узнаем о основной кодировке и декодировке.
getEncoder()
, который возвращает простой Base64.Encoder.encodeToString()
для кодирования строки.Для декодирования закодированной строки мы будем использовать Base64.Decoder, возвращаемый методом getDecoder()
.
decode()
декодера.Используйте следующий код для кодирования и декодирования строки:
import java.util.Base64;
public class Base64Encoding {
public static void main(String[] args) {
String strToEncode = "Hello World";
byte[] bytesToEncode = strToEncode.getBytes(); // преобразуем строку в массив байтов
// Кодирование
String encodedStr = Base64.getEncoder().encodeToString(bytesToEncode);
System.out.println("Encoded String: " + encodedStr);
// Декодирование
byte[] decodedByteArr = Base64.getDecoder().decode(encodedStr);
String decodedStr = new String(decodedByteArr);
System.out.println("Decoded String: " + decodedStr);
}
}
Выполните следующую команду в терминале для компиляции и запуска кода:
javac Base64Encoding.java && java Base64Encoding
В предыдущем шаге мы увидели, что кодирование добавляет символы дополнения ( = ) в конце закодированной строки. В этом шаге мы узнаем, как кодировать без символов дополнения.
Используйте следующий код для кодирования строки без дополнения:
import java.util.Base64;
public class Base64Encoding {
public static void main(String[] args) {
String strToEncode = "Java";
byte[] bytesToEncode = strToEncode.getBytes(); // преобразуем строку в массив байтов
// Кодирование без дополнения
String encodedStr = Base64.getEncoder().withoutPadding().encodeToString(bytesToEncode);
System.out.println("Encoded String: " + encodedStr);
}
}
Выполните следующую команду в терминале для компиляции и запуска кода:
javac Base64Encoding.java && java Base64Encoding
В этом шаге мы узнаем о URL- и безопасном кодировании и декодировании имен файлов.
Класс Base64 обрабатывает URL-кодирование и декодирование с использованием URL- и безопасного Base64-алфавита.
getUrlEncoder()
, чтобы получить URL-кодировщик Base64.encodeToString()
, как мы делали в предыдущем разделе.Аналогично у нас есть метод getUrlDecoder()
, который возвращает URL-декодер.
decode()
с этим декодером для декодирования.Используйте следующий код для кодирования и декодирования URL:
import java.util.Base64;
public class Base64Encoding {
public static void main(String[] args) {
String urlToEncode = "https://go.java/?intcmp=gojava-banner-java-com";
// Кодирование
String encodedUrl = Base64.getUrlEncoder().encodeToString(urlToEncode.getBytes());
System.out.println("Encoded URL: " + encodedUrl);
// Декодирование
byte[] decodedUrlBytes = Base64.getUrlDecoder().decode(encodedUrl);
String decodedUrl = new String(decodedUrlBytes);
System.out.print("Decoded URL: " + decodedUrl);
}
}
Выполните следующую команду в терминале для компиляции и запуска кода:
javac Base64Encoding.java && java Base64Encoding
В этом шаге мы узнаем о MIME-кодировании и декодировании.
Для кодирования мы можем использовать методы getMimeEncoder()
и encodeToString()
.
Для декодирования мы будем использовать метод getMimeDecoder()
для получения декодера, а затем метод decode()
.
Используйте следующий код для кодирования и декодирования данных MIME:
import java.util.Base64;
import java.util.UUID;
public class Base64Encoding {
public static void main(String[] args) {
// Создание MIME-инпута для кодирования
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 10; ++i) {
sb.append(UUID.randomUUID().toString());
}
// Кодирование
byte[] bytes = sb.toString().getBytes();
String mimeEncodedStr = Base64.getMimeEncoder().encodeToString(bytes);
System.out.println("Encoded String: " + mimeEncodedStr);
// Декодирование
byte[] mimeDecodedBytes = Base64.getMimeDecoder().decode(mimeEncodedStr);
String mimeDecodedStr = new String(mimeDecodedBytes);
}
}
Выполните следующую команду в терминале для компиляции и запуска кода:
javac Base64Encoding.java && java Base64Encoding
В этом шаге мы узнаем, как использовать библиотеку Apache Commons для кодирования и декодирования данных Base64.
Библиотека Apache Commons предоставляет класс Base64 внутри пакета org.apache.commons.codec.binary
.
encode()
и decode()
для байтов строки для выполнения кодирования и декодирования.Используйте следующий код для кодирования и декодирования строки с использованием класса Base64 Apache Commons:
import org.apache.commons.codec.binary.Base64;
public class Base64Encoding {
public static void main(String[] args) {
Base64 base64 = new Base64();
// Кодирование
String strToEncode = "Hello World";
byte[] encodedBytes = base64.encode(strToEncode.getBytes());
String encodedStr = new String(encodedBytes);
System.out.println("Encoded String: " + encodedStr);
// Декодирование
byte[] decodedByteArr = base64.decode(encodedStr.getBytes());
String decodedStr = new String(decodedByteArr);
System.out.println("Decoded String: " + decodedStr);
// Прямое доступ к API с использованием статических методов encodeBase64() и decodeBase64()
String strToEncode2 = "Hello World";
String encodedStr2 = new String(Base64.encodeBase64(strToEncode.getBytes()));
String decodedStr2 = new String(Base64.decodeBase64(encodedStr.getBytes()));
}
}
Выполните следующую команду в терминале для компиляции и запуска кода:
javac -cp commons-codec-1.15.jar Base64Encoding.java && java -cp commons-codec-1.15.jar:. Base64Encoding
Примечание: Чтобы запустить этот код, вам нужно скачать и импортировать .jar
-файл библиотеки Apache Commons Codec в класс-путь. В команде выше мы добавили -cp commons-codec-1.15.jar
, чтобы указать класс-путь библиотеки.
В этом практическом занятии мы узнали, как кодировать и декодировать данные Base64 в Java с использованием класса java.util.Base64
и библиотеки Apache Commons. Мы рассмотрели три различных схемы кодирования и декодирования Base64 - Basic, URL и безопасные имена файлов, а также MIME.