Base64 - це метод шифрування кожних 3-х байтів введення в 4 байта виведення. Він широко використовується для кодування фото і аудіо при відправці по електронній пошті (хоча часи 7-бітної передачі даних пройшли) і захисту ідентифікаційних даних (на кшталт логіна і пароля) на веб-сайтах від перехоплення. Тут представлений приклад, як написати шифрувальник Base64 на популярному мультиплатформенні мовою Java. Цей приклад і пробна рядок коду були взяти зі статті у Вікіпедії.
кроки Правити
Введіть інформацію та ім'я файлу
Згідно зі статтею, значення констант відповідають останнім робочим пропозицій (RFC). У будь-якому випадку, варто перечитати найбільш свіжі робочі пропозиції, перш ніж починати писати код.
- Тепер розглянемо найголовніше - одночасне стискання 3-х байтів в 24-бітове ціле число і витяг з нього 6-бітних індексів в кодує рядок. Це не якісь чарівні числа: 24 при розподілі на 6 дає 4, 6 бітів можуть містити числа від 0 до 63, які можуть вказувати на будь-яке значення в 64-бітної кодує рядку.
- Нарешті, після додавання вільних осередків, стискаємо вихід, вставляючи новий рядок в необхідні 76-бітові кордону, використовуючи окрему підпрограму для ясності.
- При бажанні, можна додати основну програму з метою проведення випробувань. Це також слід робити перед викладанням програми для загального користування.
- Тут представлений закінчений модуль:
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
> Public static void main (String [] args)
for (int i = 0; i
- Тепер компілюємо це, використовуючи 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 = >>
- Сходиться! Це може означати, що або обидві програми неправильні, або що обидві більш менш правильні. В такому випадку, слід заново відвідати ту статтю у Вікіпедії і прочитати робочі пропозиції на випадок, якщо тут щось упущено.