Groups | Blog | Home
all groups > dotnet general > april 2005 >

dotnet general : check if string contains base64 strings


mvdevnull
4/5/2005 8:51:01 PM
hey all
currently i use the following piece of code to check if the string passed to
me can be converted to base64, it is not very efficient and bad, can someone
please suggest another of doing this


private string ConvertBase64ToString(string[] content)
{
StringBuilder sb = new StringBuilder();
int i = content.GetUpperBound(0);
for (int j=0; j<i; j++)
{
try
{
// if successful in converting base64 append it
sb.Append(ASCIIEncoding.ASCII.GetString(Convert.FromBase64String(content.GetValue(j).ToString())));
}
catch (Exception)
{
// cannot be decoded so append the original string
sb.Append(content.GetValue(j).ToString());
}
}
return sb.ToString();
}


content passed to be looks like:
----
some string not containing base64
another strign without base64
base64base64base64stuffhere
morebase64base64stuffhere
some more strings without base64
----

is it possible to somehow find out if a line is base64 without attempting to
covert it and catching the exception?

thanks
William Stacey [MVP]
4/6/2005 12:58:11 AM
You can check the string only contains the Base64 alphabet (below) and =
zero or more padding chars ("=3D") at the *end of the string. You still =
need to try and catch as even a string that meets this test could fail =
Convert.FromBase64 (i.e. wrong padding, etc), but this simple test can =
catch the major cases. hth

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


--=20
William Stacey, MVP
http://mvp.support.microsoft.com
=20
[quoted text, click to view]
sb.Append(ASCIIEncoding.ASCII.GetString(Convert.FromBase64String(content.=
GetValue(j).ToString())));
[quoted text, click to view]
AddThis Social Bookmark Button