Recent post
Archive for Mei 2013
ENKRIPSI TEXT DENGAN METODE BASE64
MENGGUNAKAN VISUAL C#
Algoritma
Base64 merupakan algoritma yang menggunakan salah satu konsep algoritma
enkripsi modern yaitu algoritma Block Cipher yang berupa operasi pada mode bit namun
algortma Base64 ini lebih mudah dalam pengimplementasiannya dari
algoritma-algoritma yang lainnya. Base64 adalah metoda yang untuk melakukan
encoding (penyandian) terhadap data binary menjadi format 6-bit character. Pada
algoritma ini, rangkaian bit-bit palainteks dibagi menjadi blok-blok bit dengan
panjang yang sama, biasanya 64 bit yang direpresentasikan dengan karakter
ASCII. Base64 menggunakan karakter A – Z, a – z dan 0 – 9 untuk 62 nilai
pertama, sedangkan 2 nilai terakhir digunakan symbol (+ dan /).
Standar
yang penulis gunakan adalah MIME (Multipurpose Internet Mail Extensions)/RFC
1521. RFC ini menegaskan sebuah standar untuk implementasi Base64 terhadap data
binary dan melampirkan sebuah karakter padding “=” jika terdapat kekurangan
pada byte. Dalam streaming base64, spesifikasi mengharuskan setiap baris
menjadi paling banyak 76 basis-64 karakter.
|
Tabel Enkode Base64
|
|||||||
|
Value
|
Char
|
Value
|
Char
|
Value
|
Char
|
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
|
/
|
Tabel
3.1 Index Base64
Di
bawah ini merupakan sebuah contoh mudah mengkonversi kata “nuf” (decimal
110, 117, 102) menjadi dasar Notasi 64. '01101110 01110101 01100110' Ini
8-bit string dibagi ke dalam dua set 6 bit dan 4 blok. '011011 100111 010101
100110’ Untuk mengkonversi 6-bit angka, maka rubah lagi ke dalam bentuk
decimal yang didapatkan 27, 39, 20, dan 38 yang jika dilihat pada dasar
abjad-64 pada tabel diatas, maka didapatkan alphabet “bNUm”. Namun jika
string biner tidak tepat dibagi dalam 6-bit dan urutan biner tidak merupakan
ukuran 3 byte, maka Base64 mengaturya dengan menambahkan padding pada bit
terakhir. Sebagai contoh kata “nufus”, maka akan dipisah menjadi “nuf”
dan “us+1byte”.
Dalam kasus ini,
jika diberikan contoh di mana satu byte yang tersisa, maka perlu tambahan dua
byte pada semua zeros sampai akhir urutan biner. Kemudian satu byte tersebut
dapat diwakili dengan satu byte dari 64 karakter dari Base64 diikuti oleh dua
karakter padding.
Padding
karakter yang telah ditentukan adalah '='. Mari mempertimbangkan contoh string
“s” dengan decimal 115 berikut : '01110011' Contoh pad
single-byte dengan dua byte dari angka nol. '00000001 00000000
00000000 ' Sekarang biner tersebut di set urutan enam byte.
'000000
''010000''000000 ''000000' Setelah di set, maka ditemukan karakter
berdasarkan Base64 adalah “AQ==”. Begitu pula pada penambahan-penambahan
padding lainnya.
Selanjutnya,
contoh proses dekripsi. Contoh “bNUm” diatas, lalu dirubah menjadi angka
Index 27, 39, 20, dan 38. Kemudian ubah menjadi 6-bit biner. '011011 100111
010101 100110’ Set 6-bit, diubah kedalam 8-bit string. '01101110
01110101 01100110' Maka akan dihasilkan angka decimal 110, 117,
dan 102 dimana karakterkarakter semulanya adalah “nuf” jika dilihat
pada abel ASCII.
|
using System;
using System.Collections.Generic;
using System.Text;
namespace Encriptor
{
class Base64
{
public
static string
Text2Base64(string pesanAwal)
{
System.Text.ASCIIEncoding encode = new
System.Text.ASCIIEncoding();
byte[]
bytes = encode.GetBytes(pesanAwal);
return
System.Convert.ToBase64String(bytes, 0,
bytes.Length);
}
public
static string
Base642Text(string pesanEncode)
{
byte[]
bytes = System.Convert.FromBase64String(pesanEncode);
System.Text.ASCIIEncoding encode = new
System.Text.ASCIIEncoding();
return
encode.GetString(bytes, 0, bytes.Length);
}
}
}
|
|
Source Code Base64
Menggunakan Visual C#
|