2013-05-21 8 views
17

Używam szyfrowania Base64 do szyfrowania pola identyfikatora użytkownika w Javie.Zaszyfrowane Base64 Dozwolone znaki

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

Chcę wiedzieć, czy ciąg abc powyżej będą zawierać znaku ": czy nie

Gdy Base64 zaszyfrowany ciąg jest zwracany w abc, to zawsze zawierają poniżej znaków

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

Może ktoś rzucić nieco światła?

+8

Base64 to *** NIE *** szyfrowanie. Jest to metoda kodowania danych binarnych, dzięki czemu można ją przedstawić za pomocą jedynie znaków drukowalnych. Jest trywialnie odwracalny. Jeśli spodziewasz się, że dane będą bezpieczne, rozczarujesz się. –

+1

Nie powiedziałbym, że nie znajdziesz żadnego przecinka w kodowanym base64 (ogólnie) być może dla twojego przypadku ta biblioteka nie użyje żadnej innej odmiany, ale możesz znaleźć odmianę base64, która zawiera w sobie przecinek zgodnie z https://en.wikipedia.org/wiki/Base64#Variants_summary_table "Zmodyfikowane kodowanie Base64 dla nazw skrzynek IMAP (RFC 3501)" – arhak

Odpowiedz

16

nie będzie widać żadnych przecinków, średników lub cudzysłów w a Base64 zakodowanym ciągiem. Zobaczysz e Quals signs, ponieważ są używane do umieszczania końcowych treści.

11

Jeśli masz odpowiedni koder do Base64, nie będzie widać znaków specjalnych z wyjątkiem:

[AZ] [az] [0-9] [+ /] i char padding „= "na końcu, aby wskazać liczbę bajtów zerowego wypełnienia

Niemniej jednak specyfikacja pozwala na dołączenie dowolnego innego znaku. Często dane zakodowane w Base64 zawierają wiersz "\ n" co 76 znaków. Każda postać, oprócz wymienionych powyżej, musi zostać usunięta podczas dekodowania. Wypełnienie znaków oznacza liczbę bajtów zerowych dodanych do zastosowania dla znaków wynikowych n * 4.