Як закодувати рядок в base64 за допомогою java

Base64 - це метод шифрування кожних 3-х байтів введення в 4 байта виведення. Він широко використовується для кодування фото і аудіо при відправці по електронній пошті (хоча часи 7-бітної передачі даних пройшли) і захисту ідентифікаційних даних (на кшталт логіна і пароля) на веб-сайтах від перехоплення. Тут представлений приклад, як написати шифрувальник Base64 на популярному мультиплатформенні мовою Java. Цей приклад і пробна рядок коду були взяти зі статті у Вікіпедії.

кроки Правити

Як закодувати рядок в base64 за допомогою java

Як закодувати рядок в base64 за допомогою java

Введіть інформацію та ім'я файлу

Як закодувати рядок в base64 за допомогою java

Як закодувати рядок в base64 за допомогою java

Згідно зі статтею, значення констант відповідають останнім робочим пропозицій (RFC). У будь-якому випадку, варто перечитати найбільш свіжі робочі пропозиції, перш ніж починати писати код.

  • Тепер розглянемо найголовніше - одночасне стискання 3-х байтів в 24-бітове ціле число і витяг з нього 6-бітних індексів в кодує рядок. Це не якісь чарівні числа: 24 при розподілі на 6 дає 4, 6 бітів можуть містити числа від 0 до 63, які можуть вказувати на будь-яке значення в 64-бітної кодує рядку.

Як закодувати рядок в base64 за допомогою java

Як закодувати рядок в base64 за допомогою java

  1. Нарешті, після додавання вільних осередків, стискаємо вихід, вставляючи новий рядок в необхідні 76-бітові кордону, використовуючи окрему підпрограму для ясності.
  1. При бажанні, можна додати основну програму з метою проведення випробувань. Це також слід робити перед викладанням програми для загального користування.
  1. Тут представлений закінчений модуль:

private static final String base64code = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + "abcdefghijklmnopqrstuvwxyz" + "0123456789" + "+ /";

private static final int splitLinesAt = 76;

public static String encode (String string)

> Public static String splitLines (String string)

String lines = ""; for (int i = 0; i lines + = string.substring (i, Math.min (string.length (), i + splitLinesAt)); lines + = "\ r \ n";

> Public static void main (String [] args)

for (int i = 0; i System.err.println ( "encoding" "+ args [i] +" ""); System.out.println (encode (args [i]));

  1. Тепер компілюємо це, використовуючи javac, gcj, jikes або що-небудь схоже. Відчуваємо, використовуючи цитату Гоббса зі статті у Вікіпедії:

$ Java Base64 "Man is distinguished, not only by his reason, but by this singular passion from other animals, which is a lust of the mind, that by a perseverance of delight in the continued and indefatigable generation of knowledge, exceeds the short vehemence of any carnal pleasure. " >> Ось результат:

passion from other animals, which is a lust of the mind, that by a perseverance of delight in the continued and indefatigable generation of knowledge, exceeds the short vehemence of any carnal pleasure. "

TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24sIGJ1dCBieSB0aGlz IHNpbmd1bGFyIHBhc3Npb24gZnJvbSBvdGhlciBhbmltYWxzLCB3aGljaCBpcyBhIGx1c3Qgb2Yg dGhlIG1pbmQsIHRoYXQgYnkgYSBwZXJzZXZlcmFuY2Ugb2YgZGVsaWdodCBpbiB0aGUgY29udGlu dWVkIGFuZCBpbmRlZmF0aWdhYmxlIGdlbmVyYXRpb24gb2Yga25vd2xlZGdlLCBleGNlZWRzIHRo ZSBzaG9ydCB2ZWhlbWVuY2Ugb2YgYW55IGNhcm5hbCBwbGVhc3VyZS4 = >>

  1. Сходиться! Це може означати, що або обидві програми неправильні, або що обидві більш менш правильні. В такому випадку, слід заново відвідати ту статтю у Вікіпедії і прочитати робочі пропозиції на випадок, якщо тут щось упущено.

Поради Правити

додаткові статті

Схожі статті