Tentang ASCII85 atau Base85
ASCII85 atau disebut juga dengan Base85, adalah salah
satu jenis dari kriptografi modern yang merubah bentuk biner ke dalam bentuk
teks encode dan dikembangkan oleh seseorang bernama Paul E. Dengan menggunakan
lima karakter ASCII untuk mewakili empat byte data biner (membuat ukuran kode
menjadi 1/4 lebih besar dibandingkan yang asli, dengan asumsi delapan bit per
karakter ASCII), itu akan lebih efisien daripada encode dari Base64 yang hanya
menggunakan empat karakter untuk mewakili tiga byte data (hanya meningkat 1/3
dengan asumsi delapan bit per karakter ASCII).
Hal mendasar kenapa enkripsi pada suatu plainteks
diperlukan tidak lain dan tidak bukan adalah untuk melindungi pesan agar tidak
semua dapat membaca apa isi yang terdapat dalam pesan, hal ini dikarenakan
komunikasi data yang dilakukan pada biasanya dibawa atau dikirimkan dalam
bentuk teks biasa yang dapat dibaca dengan mudah oleh setiap orang, sehingga sangat
beresiko untuk bocornya isi pesan.
Empat byte dapat mewakili 232 = 4294967296 nilai yang
mungkin. Lima radix-85 digit menyediakan 855 = 4437053125 nilai yang mungkin,
cukup untuk menyediakan representasi yang unik untuk setiap kemungkinan nilai
32-bit. Karena lima radix-84 digit hanya menyediakan 845 = 4182119424 nilai
representable, 85 adalah basis terpisahkan minimun yang mungkin akan mewakili
empat byte dalam lima karekter.
Ketika pengkodean dilakukan maka masing-masing
kelompok dari 4 byte diambil sebagai angka biner 32-bit, byte byte paling
siginifikan pertama (ASCII85 menggunakan konversi besar di akhir). Kemudian,
dengan berulang kali membagi dengan 85 dan mengambil yang sisanya atau disebut
juga dengan mod, menjadi 5 radix-85 digit. Kemudian masing-masing digit (sekali
lagi yang paling signifikan pertama) dikodekan sebagai karakter yang dapat
dicetak ASCII dengan menambahkan nilai 33 pada hasil akhirnya.
Karena semua data nol sangat bersifat umum, maka
pengecualian dibuat untuk kepentingan kompresi data, dan kelompok semua nol
dikodekan dengan karakter tunggal “z” bukan “!!!!!”.
Kelompok karakter yang decode untuk nilai lebih besar
dari 232-1 (dikodekan sebagai “! S8W-”) akan menyebabkan kesalahan decoding,
misalnya akan membuat karakter “z” berada di tengah-tengah kelompok.
Kelebihan dan Kekurangan
Kelebihan
-
Membuat ukuran
kode menjadi 1/4 lebih besar dibandingkan yang asli, dengan asumsi delapan bit
per karakter ASCII. Lebih efisien dibanding encode dari Base64 yang hanya
meningkat 1/3 dengan asumsi delapan bit per karakter ASCII.
-
Tidak mudah
dikenal oleh orang banyak bahwa chipertext yang dihasilkan dibuat dengan
menggunakan algoritma ASCII85.
Kekurangan
-
data yang
dienkripsikan mungkin berisi karakter sensitif seperti kutipan, di mana kutipan
ini memiliki arti khusus dalam banyak bahasa pemrograman dan dalam beberapa
protokol berbasis teks.
Percobaan Manual Enkripsi dan Dekripsi
a.
Enkripsi
Plainteks
|
s
|
u
|
r
|
e
|
ASCII
|
115
|
115
|
114
|
101
|
Bit pattern
|
01110011
|
01110101
|
01110010
|
01100101
|
32 bit pattern
|
01110011011101010111001001100101
|
|||
Decimal
|
1937076837
|
Lakukan
perhitungan sesuai dengan rumus ASCII 85
N0
= 1937076837 / (85)4
= 37
=> hasil dibulatkan
N1
= 1937076837 – 37 * (85)4
= 5653712
/ (85)3
= 9
N2
= 5653712 – 9 * (85)3
= 126587
/ (85)2
= 17
N3
= 126587 – 17 * (85)2
= 3762
/ 85
= 44
N4
= 3762 – 44 *85
= 22
Kemudian,
setiap hasil nilai N ditambahkan dengan 33, baru setelah itu di rubah ke dalam
ASCII
N0
|
N1
|
N2
|
N3
|
N4
|
37 + 33
|
9 + 33
|
17 + 33
|
44 + 33
|
22 + 33
|
70
|
42
|
50
|
77
|
55
|
F
|
*
|
2
|
M
|
7
|
Hasil
dari enkripsi plainteks “sure” dengan menggunakan Base85 adalah F*2M7
b.
Dekripsi
Tuliskan
kembali hasil dari enkripsi dengan menggunakan ASCII 85
F
|
*
|
2
|
M
|
7
|
Rubah ke dalam ASCII kemudian dikurangi dengan 33
70-33
|
42-33
|
50-33
|
77-33
|
55-33
|
37
|
9
|
17
|
44
|
22
|
Kalikan dengan kelipatan 85
37 * (85)4
|
9 * (85)3
|
17 * (85)2
|
44 *85
|
22 * 1
|
Jumlahkan semua hasil perkalian di atas
1937076837
|
Rubah ke dalam bentuk biner 32 bit
01110011011101010111001001100101
|
Rubah bentuk 32 bit menjadi 4 byte dengan 8 bit untuk
setiap bytenya
01110011
|
01110101
|
01110010
|
01100101
|
Rubah ke dalam bentuk desimal
115
|
115
|
114
|
101
|
Rubah ke dalam bentuk ASCII
s
|
u
|
r
|
e
|
Hasil
dari deksripsi chipertext F*2M7 adalah “sure”