• Компютри и Електроника
  • Програмиране

Като Base64 кодиран стринг използвайки Java

Base64 - метод за криптиране на всеки 3 байта до 4 байта вход изход. Той е широко използван за кодиране на аудио и снимки, за да изпратите по електронната поща (по време на 7-битовите данни минута) защита и идентификационните данни (като име и парола) на интернет сайта на прихващане. Ето един пример за това как да напишете криптограф Base64 на популярния мултиплатформена езика Java. Този пример и тест ред код е взет от статия в Уикипедия.

Стъпки

    Като Base64 кодиран стринг използвайки Java
  1. Въведете вашите данни и името на файла

  2. Като Base64 кодиран стринг използвайки Java
  3. Отворете си текстов редактор, като Notepad или VI, и извършват подготвителни дейности, пита класове и известни константи. Името на файла Base64.java.

  4. Според статията, константите съответстват на последните бизнес предложения (RFC). Във всеки случай, е необходимо да прочетете най-новите работни места, предлага, преди да започнете да пишете код.

{{{1}}}

  • А сега да разгледаме най-важното нещо - едновременното свиване на 3 байта в 24-битово цяло число и го взе 6-битови кодове в kodyruyuschuyu линия. Това не е някакъв магически номер 24, когато разделена на 6 дава 4, 6 бита могат да съдържат цифрите от 0 до 63, което може да показва някаква стойност в 64-битово кодиране линия.

за (INT I = 0; I LT; stringArray.length; I + = 3) {INT к = ((stringArray [I 0xFF) LT, LT; 16) + ((stringArray [I + 0xff) LT, LT; 8 ) + (stringArray [I + 0xff); кодиран = кодиран + base64code.charAt ((J GT; GT; 18) 0x3F) + base64code.charAt ((J GT; GT; 12) 0x3F) + base64code.charAt ((J GT; GT; 6) 0x3F) + base64code .charAt (J 0x3F); }

Като Base64 кодиран стринг използвайки Java
  • за (INT I = 0; I LT; stringArray.length; I + = 3) {INT к = ((stringArray [I 0xFF) LT, LT; 16) + ((stringArray [I + 0xff) LT, LT; 8 ) + (stringArray [I + 0xff); кодиран = кодиран + base64code.charAt ((J GT; GT; 18) 0x3F) + base64code.charAt ((J GT; GT; 12) 0x3F) + base64code.charAt ((J GT; GT; 6) 0x3F) + base64code .charAt (J 0x3F); }

    }}



    Като Base64 кодиран стринг използвайки Java
    1. Накрая, след добавянето на свободни клетки компресирате изход чрез вмъкване на нов ред в рамките на изискваните 76-битов граница, използвайки отделен подпрограма за яснота.

    2. {{CodeBox | LT; източник Lang = javagt; върнете splitLines (. encoded.substring (0, encoded.length () - paddingCount) + == подниз (0, paddingCount)); } Обществени статични String splitLines (НИЗ) {String линии =; за (INT I = 0; I LT; string.length (); I + = splitLinesAt) {линии + = string.substring (I, Math.min (string.length (), I + splitLinesAt)); линии + = \ R \ N; } Върнете линии; }

      . == Подниз (0, paddingCount)); } Обществени статични String splitLines (НИЗ) {String линии =; за (INT I = 0; I LT; string.length (); I + = splitLinesAt) {линии + = string.substring (I, Math.min (string.length (), I + splitLinesAt)); линии + = \ R \ N; } Върнете линии; } Lt; / Sourcegt; }}

      1. Ако желаете, можете да добавите основната програма за провеждане на тестове. Той също така трябва да се направи преди преподава програма за общо ползване.

      {{CodeBox | LT; източник Lang = javagt; публично статично невалидни основни (String [опцията) {за (INT I = 0; I LT; args.length; I ++) {System.err.println (кодиране \ + аргументи [I + \); System.out.println (кодират (опцията [I)); }}

      за (INT I = 0; I LT; args.length; I ++) {System.err.println (кодиране \ + аргументи [I + \); System.out.println (кодират (опцията [I)); }} Lt; / Sourcegt; }}

      1. Тук е пълен модул:

      {{CodeBox | LT; източник Lang = javagt; обществени клас Base64 {лично статично окончателно String base64code = ABCDEFGHIJKLMNOPQRSTUVWXYZ + ABCDEFGHIJKLMNOPQRSTUVWXYZ + 0123456789 + /; частния статично окончателното INT splitLinesAt = 76; публично статично байт [zeroPad (дължина INT, байт [байта) {байт [подплатени = нов байт [дължина; // Определяне на виртуалната машина като 0 System.arraycopy (байтове, 0, подплатени, 0, bytes.length); върнете подплатени; } Публично статично String кодират (НИЗ) {String кодиран =; байт [stringArray; опитайте {stringArray = string.getBytes (UTF-8); // Използвайте подходящ kodyruyuschuyu линия! } Catch (Exception игнорирани) {stringArray = string.getBytes (); // Използвайте региона по подразбиране} // Определяне колко свободно байта трябва да се добави към изхода INT paddingCount на = (3 - (stringArray.length% 3))% 3; // Добавяне на безплатни байта за вход, ако е необходимо stringArray = zeroPad (stringArray.length + paddingCount, stringArray); // Process 3 байта, получаващи изход 4 // притеснявате за по-късно линия трансфер за (INT I = 0; I LT; stringArray.length; I + = 3) {INT к = ((stringArray [I 0xFF) LT; LT; 16) + ((stringArray [I + 0xff) LT, LT; 8) + (stringArray [I + 0xff); кодиран = кодиран + base64code.charAt ((J GT; GT; 18) 0x3F) + base64code.charAt ((J GT; GT; 12) 0x3F) + base64code.charAt ((J GT; GT; 6) 0x3F) + base64code .charAt (J 0x3F); } // Сменете празните стойности, кодирани с помощта на свободните байтове = върне splitLines (encoded.substring (0, encoded.length () - paddingCount) + == Подниз (0, paddingCount).); } Обществени статични String splitLines (НИЗ) {String линии =; за (INT I = 0; I LT; string.length (); I + = splitLinesAt) {линии + = string.substring (I, Math.min (string.length (), I + splitLinesAt)); линии + = \ R \ N; } Върнете линии; } Публично статично невалидни основни (String [опцията) {за (INT I = 0; I LT; args.length; I ++) {System.err.println (кодиране \ + аргументи [I + \); System.out.println (кодират (опцията [I)); }}}

      частния статично окончателно String base64code = ABCDEFGHIJKLMNOPQRSTUVWXYZ + ABCDEFGHIJKLMNOPQRSTUVWXYZ + 0123456789 + /;


      частния статично окончателното INT splitLinesAt = 76;


      публично статично байт [zeroPad (дължина INT, байт [байта) {байт [подплатени = нов байт [дължина; // Инициализира с нула от JVM System.arraycopy (байтове, 0, подплатени, 0, bytes.length); върнете подплатени; }


      публично статично String кодират (НИЗ) {


      Струнни кодиран =; байт [stringArray; опитайте {stringArray = string.getBytes (UTF-8); // Използвайте подходящо низ кодиране! } Catch (Exception игнорирани) {stringArray = string.getBytes (); // Използване на локал по подразбиране, а не крякане} // определи колко подложка байта да добавите към изхода INT paddingCount на = (3 - (stringArray.length% 3))% 3; // Добавяне на всяко необходимо уплътнение към входа stringArray = zeroPad (stringArray.length + paddingCount, stringArray); // Process 3 байта, избиване 4 изходните байтове // тревожат за CRLF вмъквания късно за (INT I = 0; I LT; stringArray.length; I + = 3) {INT к = ((stringArray [I 0xFF ) LT, LT; 16) + ((stringArray [I + 0xff) LT, LT; 8) + (stringArray [I + 0xff); кодиран = кодиран + base64code.charAt ((J GT; GT; 18) 0x3F) + base64code.charAt ((J GT; GT; 12) 0x3F) + base64code.charAt ((J GT; GT; 6) 0x3F) + base64code .charAt (J 0x3F); } // Сменете кодирани уплътнителни празноти с = връщат splitLines (encoded.substring (0, encoded.length () - paddingCount) + == Подниз (0, paddingCount).);


      } Обществени статични String splitLines (НИЗ) {


      Струнни линии =; за (INT I = 0; I LT; string.length (); I + = splitLinesAt) {


      линии + = string.substring (I, Math.min (string.length (), I + splitLinesAt)); линии + = \ R \ N;


      } Върнете линии;


      } публично статично невалидни основни (String [опцията) {


      за (INT I = 0; I LT; args.length; I ++) {


      System.err.println (кодиране \ + аргументи [I + \); System.out.println (кодират (опцията [I));


      }


      }


      } Lt; / Sourcegt; }}

      1. Можете да го компилирате, използвайки javac, GCJ, jikes или нещо подобно. Смятаме, използвайки Хобс цитат от статия в Уикипедия:

      {{CodeBox | LT; източник Lang = javagt; $ GCJ -С Base64.java $ Java Base64 Man се отличава не само с разума си, но от тази особена страст от други животни, което е страстта на ума, че с постоянство на наслада в постоянството и неуморен поколение знания, надвишава кратко страстта на всеки плътски наслади.

      $ Java Base64 Man се отличава не само с разума си, но от тази особена страст от други животни, което е страстта на ума, че с постоянство на наслада в непрекъснат и неуморен поколение на знанието, надвишава кратко страстта на всяко плътско удоволствие. LT; / Sourcegt; }} Тук е резултат:

      {{CodeBox | LT; източник Lang = javagt; кодиране Man се отличава не само с разума си, но от тази особена страст от други животни, което е страстта на ума, че с постоянство на наслада в непрекъснат и неуморен поколение на знанието, надвишава кратко страстта на всяка плътска удоволствие. TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24sIGJ1dCBieSB0aGlz IHNpbmd1bGFyIHBhc3Npb24gZnJvbSBvdGhlciBhbmltYWxzLCB3aGljaCBpcyBhIGx1c3Qgb2Yg dGhlIG1pbmQsIHRoYXQgYnkgYSBwZXJzZXZlcmFuY2Ugb2YgZGVsaWdodCBpbiB0aGUgY29udGlu dWVkIGFuZCBpbmRlZmF0aWdhYmxlIGdlbmVyYXRpb24gb2Yga25vd2xlZGdlLCBleGNlZWRzIHRo ZSBzaG9ydCB2ZWhlbWVuY2Ugb2YgYW55IGNhcm5hbCBwbGVhc3VyZS4 =

      страст от други животни, които е похотта на ума, че с постоянство на наслада в непрекъснат и неуморен поколение на знанието, надвишава кратко страстта на всяко плътско удоволствие.


      TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24sIGJ1dCBieSB0aGlz IHNpbmd1bGFyIHBhc3Npb24gZnJvbSBvdGhlciBhbmltYWxzLCB3aGljaCBpcyBhIGx1c3Qgb2Yg dGhlIG1pbmQsIHRoYXQgYnkgYSBwZXJzZXZlcmFuY2Ugb2YgZGVsaWdodCBpbiB0aGUgY29udGlu dWVkIGFuZCBpbmRlZmF0aWdhYmxlIGdlbmVyYXRpb24gb2Yga25vd2xlZGdlLCBleGNlZWRzIHRo ZSBzaG9ydCB2ZWhlbWVuY2Ugb2YgYW55IGNhcm5hbCBwbGVhc3VyZS4 = LT; / Sourcegt; }}

      1. Converge! Това може да означава, че или и двете от неправилно или както повече или по-малко правилна. В този случай, трябва да посети отново, че статията в Уикипедия и прочетете операционната доставка в случай, че има нещо нередно.

      Съвет

      • Не се страхувайте да започнете да пишете код, ако вие не разбирате. Всичко става по-ясна в практиката.

      • Java е много подходящ за общи цели и за писане на приложения за устройства като смартфони, но Javascript и Python имат мощен и кратък синтаксис. Различни езици различни силни и слаби страни.

      • Опитайте се да пишете допълнителен метод за декодиране () за този модул.

      • Въпреки че предлага учебни работни места (RFC), необходими за промишлено програмен период размерът на информация може да бъде объркващо за начинаещ. Така че понякога можете бързо да видите данните, започнете да пишете код, базиран на наличните данни, и след тестване на функционалността, сравнявайки с изискванията на работните предложения.