Пример кода кодирования и декодирования Base 64

Кто-нибудь знает, как декодировать и кодировать строку в 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))); 

Первый:

  • Выберите кодировку. UTF-8, как правило, является хорошим выбором; придерживаться кодировки, которая определенно будет действительна с обеих сторон. Было бы редко использовать что-то другое, кроме UTF-8 или UTF-16.

Передающий конец:

  • Кодировать строку в байтах (например, text.getBytes(encodingName) )
  • Кодирование байтов к base64 с использованием classа Base64
  • Передайте base64

Конечный результат:

  • Получите base64
  • Расшифруйте base64 в байтах, используя class 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); 

Для всех, кто оказался здесь, при поиске информации о том, как декодировать строку, закодированную с помощью Base64.encodeBytes() , было мое решение:

 // encode String ps = "techPass"; String tmp = Base64.encodeBytes(ps.getBytes()); // decode String ps2 = "dGVjaFBhC3M="; byte[] tmp2 = Base64.decode(ps2); String val2 = new String(tmp2, "UTF-8"); 

Кроме того, я поддерживаю старые версии Android, поэтому я использую библиотеку Basic64 Роберта Хардера от http://iharder.net/base64

что-то вроде

 String source = "password"; byte[] byteArray; try { byteArray = source.getBytes("UTF-16"); System.out.println(new String(Base64.decode(Base64.encode(byteArray, Base64.DEFAULT), Base64.DEFAULT))); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } 

Если вы используете Kotlin, чем использовать это

Для кодирования

 val password = "Here Your String" val data = password.toByteArray(charset("UTF-8")) val base64 = Base64.encodeToString(data, Base64.DEFAULT) 

Для декодирования

 val datasd = Base64.decode(base64, Base64.DEFAULT) val text = String(datasd, charset("UTF-8")) 

Для 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()) 

Чтобы зашифровать:

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

Чтобы расшифровать:

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

Основываясь на предыдущих ответах, я использую следующие методы утилиты, если кто-то захочет его использовать.

  /** * @param message the message to be encoded * * @return the enooded from of the message */ public static String toBase64(String message) { byte[] data; try { data = message.getBytes("UTF-8"); String base64Sms = Base64.encodeToString(data, Base64.DEFAULT); return base64Sms; } catch (UnsupportedEncodingException e) { e.printStackTrace(); } return null; } /** * @param message the encoded message * * @return the decoded message */ public static String fromBase64(String message) { byte[] data = Base64.decode(message, Base64.DEFAULT); try { return new String(data, "UTF-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } return null; } 

Для уровня API 26+

 String encodedString = Base64.getEncoder().encodeToString(byteArray); 

Ссылка: https://developer.android.com/reference/java/util/Base64.Encoder.html#encodeToString (byte [])

для байта android api [] для кодировщика Base64String

byte [] data = новый байт []; String Base64encodeString = android.util.Base64.encodeToString (данные, android.util.Base64.DEFAULT);

  • Проверить навигационную панель
  • Для Android требуется уровень соответствия компилятора 5.0 или 6.0. Вместо этого найдено «1.7». Используйте Android Tools> Fix Project Properties
  • Установка значения свойства Singleton в Firebase Listener
  • Как установить тайм-аут HttpResponse для Android в Java
  • Android: как анализировать URL-адрес String с пробелами для URI-объекта?
  • Chrome 59 и базовая аутентификация с seleniumом / флуоценолом
  • Как использовать устаревший HTTP-клиент Apache на Android Marshmallow?
  • Путь к ресурсу в нашей папке war / WEB-INF?
  • Что такое обратный вызов в java
  • Получение программной версии ОС на Android программно
  • Различия в виджетах для Android
  • Давайте будем гением компьютера.