Home  [Bill's Home]

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 

Text:

The results are then:

Base64
Text
(to check)

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

/