2013-05-21 3 views
17

Я использую шифрование Base64 для шифрования поля идентификатора пользователя в Java.Base64 encrypted Allowed Characters

String abc = new String(Base64.encodeBase64("Actualuseridfield")); 

Я хочу знать, является ли строка а выше будет содержать символ ",: или не

Когда Base64 зашифрованной строку возвращаются в аЬсе, будет ли он когда-либо содержать ниже символы

?
" <double quote> 
, <comma> 
: <colon> 

Может ли один пролить некоторый свет?

+8

Base64 is *** НЕ *** шифрование. Это метод кодирования двоичных данных, поэтому его можно представить, используя только печатные символы. Это тривиально обратимо. Если вы ожидаете, что данные будут защищены, вы будете разочарованы. –

+1

Я бы не сказал, что вы не найдете никакой запятой в закодированном base64 (в общем) , возможно, для вашего случая, эта библиотека не будет использовать какие-либо другие варианты, но вы можете найти вариацию base64, которая содержит запятую в нем согласно https://en.wikipedia.org/wiki/Base64#Variants_summary_table «Измененная кодировка Base64 для имен почтовых ящиков IMAP (RFC 3501)» – arhak

ответ

16

Вы не увидите запятые, двоеточия или двойные кавычки в виде Base64 закодированной строки. Вы увидите, е потому что они используются для заполнения конечного контента.

11

Если у вас есть правильный кодер для Base64, вы не увидите специальные символы, кроме:

[AZ] [AZ] [0-9] [+ /] и дополняющий символ «= 'в конце указать количество байтов с нулевым заполнением

Тем не менее спецификация позволяет включить любой другой символ. Часто кодированные данные Base64 содержат строку «\ n» каждые 76 символов. Любой символ, кроме упомянутых выше, должен быть удален во время декодирования. Символы заполнения указывают количество нулевых байтов, добавленных к n * 4 выходным символам.