Advertisement
7_2009-2012 Security #232131

clsTripleDES.vb

Encryption / Decryption of String

AI

AI Summary: This codebase represents a historical implementation of the logic described in the metadata. Our preservation engine analyzes the structure to provide context for modern developers.

Source Code
original-source
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
Original Comments (3)
Recovered from Wayback Machine