Siapa Saya
MOHON MAAF BELUM LENGKAP, MASIH DALAM PERBAIKAN
<<< TOPIK PEMBAHASAN >>>
TERMINOLOGI KRIPTOGRAFI
SEJARAH
* SCYTALE
* MESIN ENIGMA
KLASIFIKASI
* KRIPTOGRAFI KLASIK
@ SUBSTITUTION CIPHER
>> ROT13
>>> CESAR
@ TRANSPOSITION CIPHER
>>VIGINERE
@ CONCEALMENT CIPHER
* KRIPTOGRAFI MODERN
APPLIED CRYPTO & PROTOKOL
KRIPTANALISIS
Label: 0 komentar | edit post
Reaksi: 
Siapa Saya
(Sumber Wikipedia)
Mesin Enigma adalah sebuah mesin penyandi yang digunakan untuk mengenkripsikan dan mendekripsikan pesan rahasia. Enigma dipatenkan oleh insinyur Jerman Arthur Scherbius, dan awalnya digunakan untuk tujuan komersial, namun nantinya terkenal karena digunakan oleh tentara dan pemerintah Jerman Nazi sebelum dan selama Perang Dunia II. Secara teknis, mesin Enigma termasuk keluarga mesin rotor elektromekanik, yang memiliki berbagai model. Nama Enigma diambil dari kata Latin aenigma, yang artinya teka-teki.
Versi Enigma yang paling terkenal adalah yang digunakan oleh Wehrmacht (tentara Jerman Nazi). Mesin ini, mulai digunakan oleh Nazi pada 1928, pada awalnya dianggap sebagai mesin kriptografi teraman di dunia, namun akhirnya dapat dipecahkan oleh pihak Sekutu, sehingga mesin ini justru merugikan pihak Nazi. Metode pemecahan (dekripsi) mesin ini pertama kali ditemukan di tahun 1932 oleh kriptografer Polandia dari Biuro Szyfrów (Kantor Sandi), Marian Rejewski, Jerzy Różycki dan Henryk Zygalski. Namun pada 1939 Jerman mendisain ulang Enigma sehingga metode tersebut tidak dapat digunakan lagi. Berkat informasi dari Polandia, akhirnya Britania dan Perancis berhasil membuat mesin pemecah Enigma baru ini, yang diberi nama bombe. Informasi yang didapat Sekutu dari pemecahan Enigma disebut ULTRA, yang terbukti amat penting bagi kemenangan Sekutu pada Perang Dunia II. Menurut para ahli, PD II berakhir dua tahun lebih cepat berkat pemecahan Enigma ini
Label: 0 komentar | edit post
Reaksi: 
Siapa Saya
Nah kemaren kan pake sandi klasik (sandi caesar), kalau dibawah nah ini lebih ke sandi modern..apa lagi tuch?? Cuma sekedar iseng aja sih..Kalau ini pake algoritma DES (tahu khan)..gunanya tuk enkrisi file biar gak ke baca oleh orang...


import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import javax.swing.JFormattedTextField;
import java.io.ObjectOutputStream;
import java.security.Key;
import java.security.SecureRandom;import javax.crypto.Cipher;
import javax.crypto.CipherOutputStream;
import javax.crypto.KeyGenerator;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.JLabel;
import javax.swing.JPasswordField;
import javax.swing.WindowConstants;
public class NewJFrame extends javax.swing.JFrame {
private JButton jButton1;
private JButton jButton2;
private JLabel jLabel2;
private JLabel jLabel3;
private JButton jButton3;
private JPasswordField jPasswordField1;
private JLabel jLabel1;
private JTextField jTextField1;

/**
* Auto-generated main method to display this JFrame
*/
public static void main(String[] args) {
NewJFrame inst = new NewJFrame();
inst.setVisible(true);
}

public NewJFrame() {
super();
initGUI();
}

private void initGUI() {
try {
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
this.getContentPane().setLayout(null);
this.setTitle("Zae_Cryptor");
{
jButton1 = new JButton();
this.getContentPane().add(jButton1);
jButton1.setText("Enkripsi");
jButton1.setBounds(70, 88, 58, 24);
jButton1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {System.out.println("jButton1.actionPerformed,event="+ evt);
//TODO add your code for jButton10.actionPerformed
saveFile();

}
});
}
{
jTextField1 = new JTextField();
this.getContentPane().add(jTextField1);
jTextField1.setBounds(71, 17, 141, 19);
}
{
jLabel1 = new JLabel();
this.getContentPane().add(jLabel1);
jLabel1.setText("Input");
jLabel1.setBounds(8, 10, 60, 30);
}
{
jButton2 = new JButton();
this.getContentPane().add(jButton2);
jButton2.setText("Browse");
jButton2.setBounds(218, 17, 65, 19);
jButton2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {System.out.println("jButton2.actionPerformed,event="+ evt);
//TODO add your code for jButton1.actionPerformed
loadFile();
}
});
}
{
jLabel2 = new JLabel();
this.getContentPane().add(jLabel2);
jLabel2.setText("Password");
jLabel2.setBounds(7, 42, 60, 30);
}
{
jPasswordField1 = new JPasswordField();
this.getContentPane().add(jPasswordField1);
jPasswordField1.setBounds(71, 47, 141, 19);
}
{
jButton3 = new JButton();
this.getContentPane().add(jButton3);
jButton3.setText("Dekripsi");
jButton3.setBounds(150, 89, 62, 24);
jButton3.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
System.out
.println("jButton3.actionPerformed, event="
+ evt);
//TODO add your code for jButton10.actionPerformed
saveFile2();

}
});
}
{
jLabel3 = new JLabel();
this.getContentPane().add(jLabel3);
jLabel3.setText("zae3.blogspot.com");
jLabel3.setBounds(68, 112, 148, 30);
jLabel3.setFont(new java.awt.Font("Dialog",0,10));
jLabel3.setForeground(new java.awt.Color(0,0,255));
}

pack();
this.setSize(299, 170);
} catch (Exception e) {
e.printStackTrace();
}
}

private void loadFile ( ) {
JFileChooser chooser = new JFileChooser( );
int result = chooser.showOpenDialog(this);
if (result == JFileChooser.CANCEL_OPTION) return;
try {
jTextField1.setText(chooser.getSelectedFile().getAbsolutePath());
//jTextField3.setText(chooser.getSelectedFile().getName());
}
catch (Exception e) {

}
}

private void saveFile( ) {
File plain = new File(jTextField1.getText());
Key key;
//copy = chooser.getSelectedFile();
File copy = new File(jTextField1.getText()+".pde");
try {
KeyGenerator generator = KeyGenerator.getInstance("DES");
// initialization of keygenerator with PRNG

byte[] seed = jPasswordField1.getText().getBytes();

generator.init(new SecureRandom(seed));
// generating key
key = generator.generateKey();
// creating of file
File kunci =new File(jTextField1.getText()+".key");
ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(kunci));
// writing key to a file
out.writeObject(key);
// closing of stream
out.close();

Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, key);
FileInputStream fis = new FileInputStream(plain);
FileOutputStream fos = new FileOutputStream(copy);
CipherOutputStream out2 = new CipherOutputStream(fos, cipher);
byte[] buffer = new byte[1024];
while (fis.read(buffer)>=0) {
out2.write(buffer);
}
kunci.delete();
plain.delete();
JOptionPane.showMessageDialog(this,"File Encrypted.");

}catch(Exception e) {

JOptionPane.showMessageDialog(this, e);
JOptionPane.showMessageDialog(this,"Failed.");
} finally {

}
}

private void saveFile2( ) {

//JFileChooser chooser = new JFileChooser( );
//chooser.showSaveDialog(this);
File plain = new File(jTextField1.getText());
Key key;
//copy = chooser.getSelectedFile();
File copy = new File(jTextField1.getText().replaceAll(".pde",""));

try {
KeyGenerator generator = KeyGenerator.getInstance("DES");
// initialization of keygenerator with PRNG
byte[] seed = jPasswordField1.getText().getBytes();
generator.init(new SecureRandom(seed));
// generating key
key = generator.generateKey();
File kunci =new File(jTextField1.getText().replaceAll(".pde","")+".key");
ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(kunci));
// writing key to a file
out.writeObject(key);
// closing of stream
out.close();

Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");
cipher.init(Cipher.DECRYPT_MODE, key);
FileInputStream fis = new FileInputStream(plain);
FileOutputStream fos = new FileOutputStream(copy);
CipherOutputStream out2 = new CipherOutputStream(fos, cipher);
byte[] buffer = new byte[1024];
while (fis.read(buffer)>=0) {
out2.write(buffer);
}
fos.close();
fis.close();
kunci.delete();
plain.delete();
JOptionPane.showMessageDialog(this,"File decrypted.");
}catch(Exception e) {
JOptionPane.showMessageDialog(this, e);
JOptionPane.showMessageDialog(this,"Failed.");
} finally {

}

}

}

NAh ini hasilnya, kalau di running...mau dicobaaaaaaa.....!!!!

Label: 2 komentar | edit post
Reaksi: 
Siapa Saya
Salah satu metode penyandian yang pernah digunakan pada masa Yunani Kuno adalah Sandi Caesar (Caesar Cipher). Sandi ini merupakan algoritma substitusi tertua, dan proses enkripsinya adalah mengganti (substitusi) setiap huruf pada plainteks menjadi huruf ke-3 setelahnya. Dengan kata lain, setiap huruf digeser maju sebanyak tiga huruf. Dan untuk mendekripsi cipherteks cukup dengan menggeser mundur sebanyak tiga huruf.

Dengan menggunakan korespondensi 1-1 antara huruf alfabet dengan bilangan, yaitu a=0, b=1,…, z=25, maka secara umum Sandi Caesar dapat dituliskan dengan persamaan:

C = P+K mod 26

Dengan demikian, misal diberikan plainteks (P) “BELAJARSANDI”, dan Kunci (K)=3, maka cipherteksnya adalah “EHODMDUVDQGL”


Ni, Source codenya system sandi Caesar pake bahasa pemrograman java, tapi mainnya di ASCII, jadi maen di modulus 256

import javax.swing.*;
public class Caesar
{
public static void main(String[] args)
{
int shift=0;
try {
shift=new Integer(JOptionPane.showInputDialog("Masukan Kunci(0-255):")).intValue();
}
catch(NumberFormatException e)
{
JOptionPane.showMessageDialog(null,e.toString());
System.exit(1);
}
String plaintext=JOptionPane.showInputDialog("Masukan input/plainteks:");
//Mengubah plainteks ke dalam byte disimpan dalam array b.
byte[] b=plaintext.getBytes();
//Mengenkripsi.
b=caesarEncipher(b,shift);
//Mengubah byte ke string.
String ciphertext=new String(b);
JOptionPane.showMessageDialog(null,"Ciphertextnya adalah : "+ciphertext);
//Decipher the enciphered byte array.
b=caesarDecipher(b,shift);
}

//Fungsi Enkripsi.
public static byte[] caesarEncipher(byte[] message,int shift)
{
byte[] m2=new byte[message.length];
for (int i=0;i
{
m2[i]=(byte)((message[i]+shift)%256);
}
return m2;
}

//Fungsi Dekripsi.
public static byte[] caesarDecipher(byte[] message,int shift) {
byte[] m2=new byte[message.length];
for (int i=0;i
m2[i]=(byte)((message[i]+(256-shift))%256);
}
return m2;
}
}


Jika di running hasilnya kaya ini ni
...Selamat mencoba



Label: 0 komentar | edit post
Reaksi: 
Siapa Saya
UMUM
Sekolah Tinggi Sandi Negara (STSN) adalah sekolah tinggi kedinasan yang diselenggarakan oleh Lembaga Sandi Negara, berdasarkan Keppres No. 22 tahun 2003 tentang pendirian Sekolah Tinggi Sandi Negara.
Mahasiswa STSN meruapakan mahasiswa ikatan dinas (dari umum) dan mahasiswa tugas belajar. Mahasiswa ikatan dinas pada semester IV akan diangkat menjadi Calon Pegawai Negeri Sipil (CPNS) di lingkungan Lembaga Sandi Negara, sesuai dengan ketentuan dan peraturan yang berlaku.

SISTEM PENDIDIKAN, BEBAN DAN LAMA STUDI
STSN menerapkan pendidikan dengan sistem paket yang dinyatakan dalam Satuan Kredit Semester (SKS). Beban studi yang harus diselesaikan adalah 146 SKS dan ditempuh selama 4 tahun. STSN mempunyai 2 (dua) program studi yaitu program studi Teknik Persandian dan program studi Manajemen Persandian.
Program studi Teknik Persandian memiliki 2 (dua) bidang minat, yaitu Teknik Kripto dan Teknik Rancang Bangun Peralatan Sandi.

PERSYARATAN UMUM

1. Persyaratan Umum
2. Warga Negara Indonesia.
3. Sanggup bekerja pada bidang Persandian.
4. Berkelakuan baik yang dinyatakan dengan Surat Keterangan Catatan Kepolisian (SKCK).
5. Berbadan sehat dan tidak buta warna yang dinyatakan dengan surat keterangan sehat dari dokter pemerintah atau Puskesmas.


PERSYARATAN KHUSUS

1. Asal calon siswa : Lulus SMA atau Madrasah Aliyah jurusan IPA dengan nila Matematika dan Bahasa Inggris pada raport kelas 12 semester 1 dan 2 minimal 7.
2. Usia : Berusia minimal 17 tahun, maksimal 21 tahun per 31 Agustus 2009.


PENDAFTARAN
Proses pendaftaran :
A. Pengambilan dan Pengembalian Formulir serta Kelengkapan Pendaftaran

* Tanggal : 22 Juni s.d 3 Juli 2009.
* Tempat : Kampus STSN “Bumi Sanapati”, Ciseeng, Bogor.
* Contoh formulir pendaftaran klik di sini

B. Pelayanan proses pendaftaran di atas dilakukan setiap hari kerja (Senin-Jumat), pukul 09.00 s.d 15.00 WIB
Tata cara dan kelengkapan pendaftaran

1. Membawa surat lamaran yang ditulis tangan sendiri dengan dilampirkan :
2. Fotokopi ijazah/Transkrip Nilai Ujian Nasional (NUN) yang telah dilegalisir.
3. Fotokopi raport kelas 12 semester 1 dan 2 yang telah dilegalisir.
4. SKCK dari Kepolisian.
5. Surat Keterangan sehat dan tidak buta warna dari dokter pemerintah atau Puskesmas.
6. Surat Pernyataan belum menikah dari orang tua/wali (Contoh klik di sini)
7. Pas foto berwarna 3 bulan teakhir ukuran 3 x 4 cm , sebanyak 3 (tiga) lembar dengan latar belakang merah.
8. Calon harus datang sendiri untuk mendaftar dengan membawa ijazah dan surat-surat asli sesuai persyaratan tersebut di atas.
9. Panitia menentukan peserta dapat mengikuti seleksi setelah persyaratan dan kelengkapan pendaftaran dipenuhi.
10. Biaya pendaftaran dan seleksi penerimaan mahasiswa baru STSN T.A. 2009/2010 adalah sebesar Rp. 50.000,- (lima puluh ribu rupiah).

SELEKSI SARINGAN MASUK
Seleksi Penerimaan Mahasiswa Baru (SPMB) STSN tahun akademik 2009/2010 terdiri dari beberapa tahap dan dilaksanakan di kampus STSN, Bogor. Jadwal ujian SPMB STSN ditentukan kemudian oleh panitia dan dapat dilihat melalui website STSN.
Tahapan ujian masuk sebagai berikut :

* Seleksi Tahap I : Tes Akademik (Tes Potensi Akademik, Matematika, Bahasa Inggris, Komputer, Fisika-Elektronika dan Pengetahuan Umum).
* Seleksi Tahap II : Tes Psiko
* Seleksi Tahap III : Tes Kesehatan dan Tes Kebugaran.
* Seleksi Tahap IV : Wawancara.
* Seleksi Tahap V : Pantukhir
* Seleksi Penerimaan Mahasiswa Baru STSN menggunakan sistem gugur pada setiap tahap.


PERJANJIAN IKATAN DINAS
Calon Mahasiswa dari umum yang dinyatakan lulus ujian saringan masuk dan diterima sebagai mahasiswa STSN, diwajibkan menandatangani perjanjian ikatan dinas dan mendapatkan Tunjangan Ikatan Dinas (TID),sesuai dengan peraturan yang berlaku.

FASILITAS
Kampus STSN terletak di daerah Parung-Bogor, dilengkapi dengan fasilitas :

1. Ruang Kuliah.
2. Ruang Rekreasi
3. Asrama
4. Laboratorium Komputer
5. Laboratorium Bahasa
6. Laboratorium Elektronika
7. Laboratorium Sandi
8. Perpustakaan
9. Sarana Ibadah
10. Sarana Olahraga
11. Poliklinik
Siapa Saya
MD5 ialah fungsi hash kriptografik yang digunakan secara luas dengan hash value 128-bit. Pada standard Internet (RFC 1321), MD5 telah dimanfaatkan secara bermacam-macam pada aplikasi keamanan, dan MD5 juga umum digunkan untuk melakukan pengujian integritas sebuah file.

MD5 di desain oleh Ronald Rivest pada tahun 1991 untuk menggantikan hash function sebelumnya, yaitu MD4 yang berhasil diserang oleh kriptanalis. Algoritma MD5 menerima masukan berupa pesan dengan ukuran sembarang dan menghasilkan message digest yang panjangnya 128 bit.

MD-5 adalah salah satu aplikasi yang digunakan untuk mengetahui bahwa pesan yang dikirim tidak ada perubahan sewaktu berada di jaringan. Algoritma MD-5 secara garis besar adalah mengambil pesan yang mempunyai panjang variable diubah menjadi ‘sidik jari’ atau ‘intisari pesan’ yang mempunyai panjang tetap yaitu 128 bit. ‘Sidik jari’ ini tidak dapat dibalik untuk mendapatkan pesan, dengan kata lain tidak ada orang yang dapat melihat pesan dari ‘sidik jari’ MD-5

Message Digest 5 (MD-5) adalah salah satu penggunaan fungsi hash satu arah yang paling banyak digunakan. MD-5 merupakan fungsi hash kelima yang dirancang oleh Ron Rivest dan didefinisikan pada RFC 1321[10]. MD-5 merupakan pengembangan dari MD-4 dimana terjadi penambahan satu ronde[1,3,10]. MD-5 memproses teks masukan ke dalam blok-blok bit sebanyak 512 bit, kemudian dibagi ke dalam 32 bit sub blok sebanyak 16 buah. Keluaran dari MD-5 berupa 4 buah blok yang masing-masing 32 bit yang mana akan menjadi 128 bit yang biasa disebut nilai hash[3,10]. Simpul utama MD5 mempunyai blok pesan dengan panjang 512 bit yang masuk ke dalam 4 buah ronde. Hasil keluaran dari MD-5 adalah berupa 128 bit dari byte terendah A dan tertinggi byte D.


Algoritma Dan Cara Kerja


a. Penjelasan Algoritma MD5

Setiap pesan yang akan dienkripsi, terlebih dahulu dicari berapa banyak bit yang terdapat pada pesan. Kita anggap sebanyak b bit. Di sini b adalah bit non negatif integer, b bisa saja nol dan tidak harus selalu kelipatan delapan.

b. Cara Kerja MD5

Langkah-langkah pembuatan message digest secara garis besar:

1. Penambahan bit-bit pengganjal (padding bits).

2. Penambahan nilai panjang pesan semula.

3. Inisialisasi penyangga (buffer) MD.

4. Pengolahan pesan dalam blok berukuran 512 bit.


1. Penambahan Bit-bit Pengganjal

    • Pesan ditambah dengan sejumlah bit pengganjal sedemikian sehingga panjang pesan (dalam satuan bit) kongruen dengan 448 modulo 512.
    • Jika panjang pesan 448 bit, maka pesan tersebut ditambah dengan 512 bit menjadi 960 bit. Jadi, panjang bit-bit pengganjal adalah antara 1 sampai 512.
    • Bit-bit pengganjal terdiri dari sebuah bit 1 diikuti dengan sisanya bit 0.


2. Penambahan Nilai Panjang Pesan

    • Pesan yang telah diberi bit-bit pengganjal selanjutnya ditambah lagi dengan 64 bit yang menyatakan panjang pesan semula.
    • Jika panjang pesan > 264 maka yang diambil adalah panjangnya dalam modulo 264. Dengan kata lain, jika panjang pesan semula adalah K bit, maka 64 bit yang ditambahkan menyatakan K modulo 264.
    • Setelah ditambah dengan 64 bit, panjang pesan sekarang menjadi kelipatan 512 bit.


3. Inisialisai Penyangga MD

* MD5 membutuhkan 4 buah penyangga (buffer) yang masing-masing panjangnya 32 bit. Total panjangpenyangga adalah 4 ´ 32 = 128 bit. Keempat penyangga ini menampung hasil antara dan hasil akhir.

* Keempat penyangga ini diberi nama A, B, C, dan D. Setiap penyangga diinisialisasi dengan nilai-nilai (dalam notasi HEX) sebagai berikut:

A = 01234567

B = 89ABCDEF

C = FEDCBA98

D = 76543210


4. Pengolahan Pesan dalam Blok Berukuran 512 bit.

    * Pesan dibagi menjadi L buah blok yang masing-masing panjangnya 512 bit (Y0 sampai YL – 1). *

    * Setiap blok 512-bit diproses bersama dengan penyangga MD menjadi keluaran 128-bit, dan ini

    disebut proses HMD5. Gambaran proses HMD5 diperlihatkan pada Gambar berikut ini.


c. Inisialisasi MD5

Pada MD-5 terdapat empat buah word 32 bit register yang berguna untuk menginisialisasi message digest

pertama kali. Register-register ini di inisialisasikan dengan bilangan hexadesimal.

word A: 01 23 45 67

word B: 89 AB CD EF

word C: FE DC BA 98

word D: 76 54 32 10

Register-register ini biasa disebut dengan nama Chain variabel atau variabel rantai.


d. Proses Pesan di Dalam Blok 16 word

Pada MD-5 juga terdapat 4 (empat) buah fungsi nonlinear yang masing-masing digunakan pada tiap operasinya (satu fungsi untuk satu blok), yaitu:

F(X,Y,Z) = (X Ù Y) Ú ((Ø X) Ù Z)

G(X,Y,Z) = (X Ù Z) Ú (Y Ù (Ø Z))

H(X,Y,Z) = X Å Y Å Z

I (X,Y,Z) = Y Å (X Ú (Ø Z))

(Å untuk XOR, Ù untuk AND, Ú untuk OR dan Ø untuk NOT).

Pada Gambar 3.2 dapat dilihat satu buah operasi dari MD-5 dengan operasi yang dipakai sebagai contoh adalah FF(a,b,c,d,Mj,s,ti) menunjukan a = b + ((a + F(b,c,d) + Mj + ti) <<<>

FF(a,b,c,d,Mj,s,ti) menunjukan a = b + ((a + F(b,c,d) + Mj + ti) <<<>

GG(a,b,c,d,Mj,s,ti) menunjukan a = b + ((a + G(b,c,d) + Mj + ti) <<<>

HH(a,b,c,d,Mj,s,ti) menunjukan a = b + ((a + H(b,c,d) + Mj + ti) <<<>

II(a,b,c,d,Mj,s,ti) menunjukan a = b + ((a + I(b,c,d) + Mj + ti) <<<>


Label: 0 komentar | edit post
Reaksi: 
Siapa Saya
Fungsi hash sering juga disebut fungsi enkripsi satu arah, atau disebut juga message diggest. Fungsi hash digunakan untuk menjamin servis otentikasi dan integritas suatu pesan atau file. Suatu fungsi hash h memetakan bit-bit string dengan panjang sembarang ke sebuah string dengan panjang tertentu misal n. Dengan domain D dan range R maka: Proses hashing merupakan proses pemetaan suatu input string menjadi output disebut. Output dari fungsi hash disebut nilai hash atau hasil hash.

h : D → R dan |D| > |R|

Ide utama dari hash adalah bahwa suatu nilai hash berlaku sebagai representasi dari data secara sederhana (disebut juga message-diggest, imprint, digital finger-print) dari suatu input string, dan dapat digunakan hanya jika nilai hash tersebut dapat diidentifikasi secara unik dengan input string tersebut. Fungsi h adalah many-to-one, sehingga memungkinkan terjadinya pasangan input dengan output sama : collision. Secara umum fungsi hash harus memiliki 2 (dua) sifat dasar yaitu :

1. Kompresi (Compression), fungsi h memetakan suatu input x dgn panjang sembarang ke output y = h(x) dgn panjang tetap n;

2. Mudah dihitung (Easy Computation), dengan diberikan h dan sebuah input x, maka y mudah dihitung.

Fungsi hash diklasifikasikan dalam 2 kelas yaitu (menurut Menezes, Oorschot dan Vanstone, 1996):

1. MDCs (Manipulation Detection Codes).

2, Message Authentication Codes (MACs).

MDCs (Manipulation Detection Codes), atau juga disebut dengan istilah modification detecton codes atau message integrity codes (MICs) yang merupakan fungsi Hash tanpa kunci. Tujuannya adalah (informal) untuk memberikan suatu imej yang representatif (disebut nilai hash) pada suatu message. Pada kelas ini input darifungsi hash hanyalah pesan yang akan dikirim dan tidak membutuhkan input kunci rahasia. MDCs banyak digunakan untuk servis integritas data khususnya dalam aplikasi skema digital-signature. Pembagian kelas dari MDCs adalah:1. One Way hash Functions (OWHFs).2. Collision resistant hash Functions (CRHFs).Contoh algoritma hash untuk MDCs diantaranya adalah : MD2, MD4, MD5, RIPE-MD, Snefru, N-Hash, Secure Hash Algoritm-1 (SHA-1) yang merupakan OWHF sedangkan MASH-1 dan MASH-2 masuk kategori CRHF.

Message Authentication Codes (MACs) MACs adalah fungsi hash untuk otentikasi data dengan teknik simetrik. Algoritma MACs mengambil dua input yang secara fungsional berbeda, sebuah pesan (message) dan sebuah kunci rahasia (maka disebut “keyed hash function”), untuk menghasilkan suatu output dengan ukuran yang tetap. Secara praktis sulit menghasilkan nilai MAC yang sama tanpa pengetahuan tentang kunci rahasia tersebut. MACs juga menyediakan servis integritas data. Contoh algoritma hash untuk aplikasi MACs adalah HMAC, MD5-MAC, MAA, Block-based MACs : CBC-MAC, RIPE-MAC, GOST; Stream-based MACs : SEAL; CRC-based MAC, dan lainnya. Pada prinsipnya MACs dapat dikonstruksi dari MDCs seperti contohnya algoritma MD5-MAC.

Label: 0 komentar | edit post
Reaksi: