Example from VB NET 2005 PasswordDeriveBytes Class

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • news.microsoft.com

    #1

    Example from VB NET 2005 PasswordDeriveBytes Class

    Hello,

    In the Visual Basic example I see the next line:
    tdes.Key = pdb.CryptDerive Key("TripleDES" , "SHA1", 192, tdes.IV)

    tdes.Key is obviously created.
    but what about tdes.IV?

    This value is never filled if I'm correct?



    help code:
    Imports System
    Imports System.Security .Cryptography
    Imports System.Text



    Module PasswordDerived BytesExample


    Sub Main(ByVal args() As String)

    ' Get a password from the user.
    Console.WriteLi ne("Enter a password to produce a key:")

    '************** *************** *************** ************
    '* Security Note: Never hard-code a password within your
    '* source code. Hard-coded passwords can be retrieved
    '* from a compiled assembly.
    '************** *************** *************** ************
    Dim pwd As Byte() = Encoding.Unicod e.GetBytes(Cons ole.ReadLine())

    Dim salt As Byte() = createRandomSal t(7)

    ' Create a TripleDESCrypto ServiceProvider object.
    Dim tdes As New TripleDESCrypto ServiceProvider ()

    Try
    Console.WriteLi ne("Creating a key with PasswordDeriveB ytes...")

    ' Create a PasswordDeriveB ytes object and then create
    ' a TripleDES key from the password and salt.
    Dim pdb As New PasswordDeriveB ytes(pwd, salt)

    ' Create the key and add it to the Key property.
    tdes.Key = pdb.CryptDerive Key("TripleDES" , "SHA1", 192, tdes.IV)

    Console.WriteLi ne("Operation complete.")
    Catch e As Exception
    Console.WriteLi ne(e.Message)
    Finally
    ' Clear the buffers
    clearBytes(pwd)
    clearBytes(salt )

    ' Clear the key.
    tdes.Clear()
    End Try

    Console.ReadLin e()

    End Sub


    '************** *************** *************** ************
    '* Helper methods:
    '* createRandomSal t: Generates a random salt value of the
    '* specified length.
    '*
    '* clearBytes: Clear the bytes in a buffer so they can't
    '* later be read from memory.
    '************** *************** *************** ************
    Function createRandomSal t(ByVal Length As Integer) As Byte()
    ' Create a buffer
    Dim randBytes() As Byte

    If Length >= 1 Then
    randBytes = New Byte(Length) {}
    Else
    randBytes = New Byte(0) {}
    End If

    ' Create a new RNGCryptoServic eProvider.
    Dim rand As New RNGCryptoServic eProvider()

    ' Fill the buffer with random bytes.
    rand.GetBytes(r andBytes)

    ' return the bytes.
    Return randBytes

    End Function


    Sub clearBytes(ByVa l Buffer() As Byte)
    ' Check arguments.
    If Buffer Is Nothing Then
    Throw New ArgumentExcepti on("Buffer")
    End If

    ' Set each byte in the buffer to 0.
    Dim x As Integer
    For x = 0 To Buffer.Length - 1
    Buffer(x) = 0
    Next x

    End Sub
    End Module


Working...