Base64 Decoding
Many Internet protocols were not designed to transport binary information, thus
there often needs to be a transform between binary data streams into a text format.
One of the most common is Base64 which takes the bit stream, and converts each 6-bit
binary value into a text value. For example
The results are then:
Try it with a message of "Hello" , and
you should get:
SGVsbG8=
The
code is: protected void Button3_Click(object sender,
EventArgs e)
{
string message;
message = this.message.Text;
this.tbEncode.Text = base64Encode(message);
this.tbDecode64.Text = base64Decode(this.tbEncode.Text);
}
public string base64Decode(string data)
{
// Source: http://www.vbforums.com/showthread.php?s=&threadid=287324
try
{
System.Text.UTF8Encoding encoder = new System.Text.UTF8Encoding();
System.Text.Decoder utf8Decode = encoder.GetDecoder();
byte[] todecode_byte = Convert.FromBase64String(data);
int charCount = utf8Decode.GetCharCount(todecode_byte, 0, todecode_byte.Length);
char[] decoded_char = new char[charCount];
utf8Decode.GetChars(todecode_byte, 0, todecode_byte.Length, decoded_char,
0);
string result = new String(decoded_char);
return result;
}
catch (Exception e)
{
throw new Exception("Error in base64Decode" + e.Message);
}
}
public string base64Encode(string data)
{
// Source: http://www.vbforums.com/showthread.php?s=&threadid=287324
try
{
byte[] encData_byte = new byte[data.Length];
encData_byte = System.Text.Encoding.UTF8.GetBytes(data);
string encodedData = Convert.ToBase64String(encData_byte);
return encodedData;
}
catch (Exception e)
{
throw new Exception("Error in base64Encode" + e.Message);
}
}
Theory
The coding table for Base64 is given below.
|
Bit
|
Encoding |
Bit |
Encoding |
Bit |
Encoding |
Bit |
Encoding |
|
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 |
/ |
|