VB icon

clsTripleDES.vb

Email
Submitted on: 1/2/2015 2:04:00 AM
By: RobJames (from psc cd)  
Level: Intermediate
User Rating: By 3 Users
Compatibility: VB.NET
Views: 1997
 
     Encryption / Decryption of String
 
Can't Copy and Paste this?
Click here for a copy-and-paste friendly version of this code!
//**************************************
// for :clsTripleDES.vb
//**************************************
Based on Wrox article http://www.devarticles.com/art/1/249/6.
code:
Can't Copy and Paste this?
Click here for a copy-and-paste friendly version of this code!
				
//**************************************
// Name: clsTripleDES.vb
// Description:Encryption / Decryption of String
// By: RobJames (from psc cd)
//
// Assumes:Triple DES algorithm used in combination with conversion to base64 string within Encrypted / Decrypted properties for easy storage in e.g. database. Uses MemoryStream as opposed to FileStream. Key() should be stored in seperate binary.
//**************************************

Imports System
Imports System.IO
Imports System.Text
Imports System.Security.Cryptography
Imports System.Xml
Public Class clsTES
Private _CreditCardNumber As String
Private _EncCreditCardNumber As String
Public Property CreditCardNumber() As String
Get
Return _CreditCardNumber
End Get
Set(ByVal Value As String)
'exit if no value 
If Value = String.Empty Then Exit Property
_CreditCardNumber = Value
'encrypt class ref. set 
Dim objTES As New clsTES()
'encrypt ccard string 
Dim baEnc As Byte() = objTES.Encrypt(_CreditCardNumber)
'get base64 string from byte array
Dim s64 As String = System.Convert.ToBase64String(baEnc)
'set class string enc. 
_EncCreditCardNumber = s64
End Set
End Property
Public Property EncryptedCreditCardNumber() As String
Get
Return _EncCreditCardNumber
End Get
Set(ByVal Value As String)
'exit if no value 
If Value = String.Empty Then Exit Property
If _CreditCardNumber = String.Empty Then Exit Property
_EncCreditCardNumber = Value
'decrypt class ref. set 
Dim objTES As New clsTES()
'get byte array from base64 string i.e. from db stored as base64
Dim baDec As Byte() = System.Convert.FromBase64String(_CreditCardNumber)
'decrypt ccard string 
Dim sDec As String = objTES.Decrypt(baDec)
'set string decrypted
_CreditCardNumber = sDec
End Set
End Property
'keys 
Private key() As Byte = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24}
Private iv() As Byte = {65, 110, 68, 26, 69, 178, 200, 219}
Public Function Encrypt(ByVal plainText As String) As Byte()
' Declare a UTF8Encoding object so we may use the GetByte 
' method to transform the plainText into a Byte array. 
Dim utf8encoder As UTF8Encoding = New UTF8Encoding()
Dim inputInBytes() As Byte = utf8encoder.GetBytes(plainText)
' Create a new TripleDES service provider 
Dim tdesProvider As TripleDESCryptoServiceProvider = New TripleDESCryptoServiceProvider()
' The ICryptTransform interface uses the TripleDES 
' crypt provider along with encryption key and init vector 
' information 
Dim cryptoTransform As ICryptoTransform = tdesProvider.CreateEncryptor(Me.key, Me.iv)
' All cryptographic functions need a stream to output the 
' encrypted information. Here we declare a memory stream 
' for this purpose. 
Dim encryptedStream As MemoryStream = New MemoryStream()
Dim cryptStream As CryptoStream = New CryptoStream(encryptedStream, _
cryptoTransform, CryptoStreamMode.Write)
' Write the encrypted information to the stream. Flush the information 
' when done to ensure everything is out of the buffer. 
cryptStream.Write(inputInBytes, 0, inputInBytes.Length)
cryptStream.FlushFinalBlock()
encryptedStream.Position = 0
' Read the stream back into a Byte array and return it to the calling 
' method. 
Dim result(encryptedStream.Length - 1) As Byte
encryptedStream.Read(result, 0, encryptedStream.Length)
cryptStream.Close()
'test section
'Convert to / fro the memory stream to a base64 string
'compare decText to result
Dim encText As String = Convert.ToBase64String(encryptedStream.ToArray())
Dim decText As Byte() = Convert.FromBase64String(encText)
Dim sDec As String = Decrypt(decText)
Return result
End Function
Public Function Decrypt(ByVal inputInBytes() As Byte) As String
' UTFEncoding is used to transform the decrypted Byte Array 
' information back into a string. 
Dim utf8encoder As UTF8Encoding = New UTF8Encoding()
Dim tdesProvider As TripleDESCryptoServiceProvider = New _
TripleDESCryptoServiceProvider()
' As before we must provide the encryption/decryption key along with 
' the init vector. 
Dim cryptoTransform As ICryptoTransform = _
tdesProvider.CreateDecryptor(Me.key, Me.iv)
' Provide a memory stream to decrypt information into 
Dim decryptedStream As MemoryStream = New MemoryStream()
Dim cryptStream As CryptoStream = New CryptoStream(decryptedStream, _
cryptoTransform, CryptoStreamMode.Write)
cryptStream.Write(inputInBytes, 0, inputInBytes.Length)
cryptStream.FlushFinalBlock()
decryptedStream.Position = 0
' Read the memory stream and convert it back into a string 
Dim result(decryptedStream.Length - 1) As Byte
decryptedStream.Read(result, 0, decryptedStream.Length)
cryptStream.Close()
Dim myutf As UTF8Encoding = New UTF8Encoding()
Return myutf.GetString(result)
End Function
End Class


Report Bad Submission
Use this form to tell us if this entry should be deleted (i.e contains no code, is a virus, etc.).
This submission should be removed because:

Your Vote

What do you think of this code (in the Intermediate category)?
(The code with your highest vote will win this month's coding contest!)
Excellent  Good  Average  Below Average  Poor (See voting log ...)
 

Other User Comments


 There are no comments on this submission.
 

Add Your Feedback
Your feedback will be posted below and an email sent to the author. Please remember that the author was kind enough to share this with you, so any criticisms must be stated politely, or they will be deleted. (For feedback not related to this particular code, please click here instead.)
 

To post feedback, first please login.