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.