jump to navigation

Encrypt / Decrypt string menggunakan algoritma symetris [ DES ] January 19, 2009

Posted by Herwin Anggeriana in ASP.net, Programming.
add a comment

DES adalah suatu algoritma symetris yang digunakan umumnya untuk pengacakkan / encrypt data pada file atau suatu string, dimana pengacakkan data ini menggunakan generator yang kita kenal dengan single private key. Salah satu mekanisme encryption / decryption yang mudah digunakan adalah MemoryStream.

 

Bagaimana kita menerapkan DES dengan MemoryStream pada aplikasi ASP.net ;

 

Imports System.Text

Imports System.Security.Cryptography

 

Public Module MyCryptoLib

 

Public Function Encrypt( _

                ByVal s As String, _

                ByVal Password As String _

                ) As string

 

‘Mendapatkan setiap byte data yang akan di encrypt dan jadikan dalam bentuk array

Dim data() As Byte = Encoding.ASCII.GetBytes(s)

 

‘Menggunakan module tambahan dari CSP

Dim des As New DESCrytoServiceProvider()

 

‘Untuk mudahnya simpan array yang berisi data ke dalam key dan herwin

Dim key() As Byte

Dim herwin () As Byte

 

“Generate pengacakan

GenerateKey(Password, des.BlockSize, key, herwin)

Des.Key = key

Des.IV = herwin

‘Melakukan penyimpanan ke dalam memory menggunakan IO Stream dan hapus data temporary

Dim mout As New MemoryStream()

 

‘Panggil dan execute module encryption stream

Dim encStream As New CryptoStream(mout, des.CreateEncryptor(), CryptoStreamMode.Writes)

 

Dim I as long

 

‘Membaca setiap isi string dan simpan ke dalam stream

For I = 0 To data.length -1 Step 4096

encStream.Write(data, I * 4096, data.length – (I * 4096))

Next

 

‘Keluarkan hasil output dari stream

encStream.FlushFinalBlock()

 

‘Membuat tempat penyimpanan sementara berbentuk array untuk menampung hasil encryption

Dim result(mout.Length – 1) As Byte

 

‘Mencari byte yang pertama dalam memory

mout.Seek(0, SeekOrigin.Begin)

 

‘Membaca isinya

Mout.Read(result, 0, result.Length)

 

‘Tutup

endStream.Close()

mout.Close()

 

Return Convert.ToBase64String(result)

End Function

 

Mudah bukan..

Untuk membuat fungsi decrypt, gunakan mekanisme yang sama, hanya sedikit berbeda ketika anda memanggil module encryption.

è Des.CreateDecryptor()

Dan jangan lupa hasil decrypt-nya dikonvert / diubah dalam bentuk ASCII, agar dapat dibaca oleh manusia.