Sunday, February 08, 2004

' Feb/2003 - hcorrea@visionds.com
'
' This class encrypts and decrypts values. Basically
' it is a wrapper for some of the .NET cryptography
' classes.

' Code for this class was originally developed by
' Paolo Miserini [@datamat.it].
' Reference: http://www.dotnet247.com/247reference/msgs/13/65847.aspx
'
' To do list:
' Port to VFP, test with dataevents.
' We should probably create shared version of Deciper and Ciper methods.
'
' Usage sample:
' Dim Cipher As New Cipher()
' Me.txtOriginalValue.Text = Cipher.DeCipher(Me.txtEncrypted.Text, Me.txtKey.Text)
'
'
' Dim Cipher As New Cipher()
' Me.txtEncrypted.Text = Cipher.Cipher(Me.txtOriginalValue.Text, Me.txtKey.Text)
'

Imports System.Text
Imports System.Security.Cryptography

Public Class Cipher

Dim DefaultEncryptionKey As String
Dim des As New TripleDESCryptoServiceProvider()
Dim hashmd5 As New MD5CryptoServiceProvider()

Public Sub New()
' Default encryption/decryption key. You should
' provide your own when you instanciate the class or
' pass a key value to Cipher and Decipher methods.
DefaultEncryptionKey = "DefaulEncryptionKeyYouShouldProvideYourOwn"
End Sub

Public Function DeCipher(ByVal TextToDecipher As String) As String
Return DeCipher(TextToDecipher, DefaultEncryptionKey)
End Function

Public Function DeCipher(ByVal TextToDecipher As String, ByVal EncryptionKey As String) As String
Dim DeCipheredValue As String = Nothing
des.Key = hashmd5.ComputeHash(ASCIIEncoding.ASCII.GetBytes(EncryptionKey))
des.Mode = CipherMode.ECB
Dim desdencrypt As ICryptoTransform = des.CreateDecryptor()
Dim buff() As Byte = Convert.FromBase64String(TextToDecipher)
DeCipheredValue = ASCIIEncoding.ASCII.GetString(desdencrypt.TransformFinalBlock(buff, 0, buff.Length))
Return DeCipheredValue
End Function

Public Function Cipher(ByVal TextToCipher As String) As String
Return Cipher(TextToCipher, DefaultEncryptionKey)
End Function

Public Function Cipher(ByVal TextToCipher As String, ByVal EncryptionKey As String) As String
Dim CipheredValue As String = Nothing
des.Key = hashmd5.ComputeHash(ASCIIEncoding.ASCII.GetBytes(EncryptionKey))
des.Mode = CipherMode.ECB
Dim desdencrypt As ICryptoTransform = des.CreateEncryptor()
Dim MyASCIIEncoding = New ASCIIEncoding()
Dim buff() As Byte = ASCIIEncoding.ASCII.GetBytes(TextToCipher)
CipheredValue = Convert.ToBase64String(desdencrypt.TransformFinalBlock(buff, 0, buff.Length))
Return CipheredValue
End Function

End Class

No comments: