2013-03-04 16 views
12

Una delle mie università mi diceva che la stringa vuota non è una stringa di dati codificata base64 valida. Non penso che questo sia vero (è troppo pigro per analizzarlo), ma dopo aver cercato su Google un po 'e persino aver controllato il RFC non ho trovato alcuna documentazione che esplicitamente indichi come codificare correttamente un blob di zero byte di lunghezza in base64.È una stringa vuota dati codificati base64 con lunghezza zero byte?

Quindi, la domanda è: Avete un collegamento ad una documentazione ufficiale che indichi esplicitamente come codificare zero byte in base64?

risposta

5

Il mio pensiero su questo è che ci sono due possibili valori di base64 che una stringa vuota potrebbe produrre; una stringa vuota o una stringa che consiste interamente di caratteri pad ('==='). Qualsiasi altra stringa base64 valida contiene informazioni. Con il secondo caso, si può applicare la seguente regola dalla RFC:

Se più del numero consentito di caratteri pad si trovano alla fine della stringa, ad esempio, una stringa di base 64 terminato con "= == ", i caratteri di pad in eccesso potrebbero essere ignorati.

Poiché possono essere ignorati, essi possono essere lasciati dalla stringa codificata risultante senza conseguenze, ancora una volta lasciando noi con una stringa vuota come la rappresentazione base64 di una stringa vuota.

+1

Mi piace il tuo approccio, invece di avere una stringa vuota potrei avere segni uguali. A proposito penso che dovrebbe essere o quattro o uno. I dati codificati Base64 dovrebbero avere una lunghezza divisibile per quattro. Ma la funzione su cui si basa è su personaggi in eccesso che dovrebbero essere ignorati, quindi potrei semplicemente dire "=". – Fozi

+0

Ho provato a utilizzare il metodo .net Convert.FromBase64String ("==="), ma non riesce con un'eccezione. Usando string.Empty funziona e restituisce un byte vuoto []. – teamalpha5441

Problemi correlati