2013-05-27 73 views
3

當我米嘗試使用下面的代碼,以數值1爲byte []轉換:如何解決「base64無效字符」錯誤?

string value1 = "4rdHFh%2BHYoS8oLdVvbUzEVqB8Lvm7kSPnuwF0AAABYQ%3D"; 
byte[] value2 = Convert.FromBase64String(value1); 

Ι收到一個錯誤的字符串內容無效基64個字符...

有什麼不對?

謝謝!

+2

您需要先將其從URL編碼轉換回來。 HttpUtility.UrlDecode()方法。 –

回答

1

我認爲問題是與字符%。它不是以base64串

允許根據MSDN

public static byte[] FromBase64String( string s) 

S由的BASE64數字,空格字符,和尾隨 填充字符。從零開始 的升序的基數64位是大寫字符「A」到「Z」,小寫字母「a」到 「z」,數字「0」到「9」以及符號「+」和「/」。

0

這是因爲字符串中的'%'字符。這在base64中是不允許的。你從哪裏拿這個字符串?

+0

字符串中沒有'#'字符;) –

+0

這當然是錯誤的,做了更新;) – anderhil

6

Convert.FromBase64String

s的由底座64個數字,空格字符,和尾隨 填充字符。 從零開始 的大寫字母'A'到'Z',小寫字母'a'到 'z',數字'0'到'9'以及符號'+'和'/'

%不允許在base64編碼。從Wikipedia

Value Char 
0 A 16 Q 32 g 48 w 
1 B 17 R 33 h 49 x 
2 C 18 S 34 i 50 y 
3 D 19 T 35 j 51 z 
4 E 20 U 36 k 52 0 
5 F 21 V 37 l 53 1 
6 G 22 W 38 m 54 2 
7 H 23 X 39 n 55 3 
8 I 24 Y 40 o 56 4 
9 J 25 Z 41 p 57 5 
10 K 26 a 42 q 58 6 
11 L 27 b 43 r 59 7 
12 M 28 c 44 s 60 8 
13 N 29 d 45 t 61 9 
14 O 30 e 46 u 62 + 
15 P 31 f 47 v 63/
1

退房的Base64編碼索引表字符串包含無效字符。在這種情況下,%標誌。

如果您將unescape %2B改爲「+」而%3D改爲「=」,則字符串將被接受。

1

%2B是+符號URL編碼爲 %3D是符號URL編碼。

您的輸入字符串實際上是。

4rdHFh+HYoS8oLdVvbUzEVqB8Lvm7kSPnuwF0AAABYQ= 
2

我有同樣的問題,但沒有一個答案幫助我!所以我在這裏問我的問題: How to encrypt strings that may have non-base 64 characters 和@luke-park解決我的問題。(所有學分都歸他所有)長篇故事短片是:

我們必須將我們的inputString數據轉換爲字節數組,然後將其轉換爲bsae64。現在,我們的數據是有效的base64格式,可以對它進行加密:

byte[] data = Encoding.UTF8.GetBytes(inputString); 
string b64 = Convert.ToBase64String(data); 

我希望這種幫助別人的人有同樣的問題。

PS:在我的文章中有兩個加密類,非常適合用於加密/解密字符串。

相關問題