check if string contains base64 strings

G

Guest

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
 
W

William Stacey [MVP]

You can check the string only contains the Base64 alphabet (below) and zero or more padding chars ("=") 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) =
15 P 32 g 49 x
16 Q 33 h 50 y
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top