Chilkat HOME Android™ Classic ASP C C++ C# Mono C# .NET Core C# C# UWP/WinRT DataFlex Delphi ActiveX Delphi DLL Visual FoxPro Java Lianja MFC Objective-C Perl PHP ActiveX PHP Extension PowerBuilder PowerShell PureBasic CkPython Chilkat2-Python Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ Visual Basic 6.0 VB.NET VB.NET UWP/WinRT VBScript Xojo Plugin Node.js Excel Go
(VB.NET UWP/WinRT) Duplicate .NET's Rfc2898DeriveBytes FunctionalityDemonstrates how to duplicate the results produced by .NET's System.Security.Cryptography.Rfc2898DeriveBytes class.
' This example assumes Chilkat Crypt2 to have been previously unlocked. ' See Unlock Crypt2 for sample code. ' This example demonstrates how to duplicate the results produced ' by .NET's System.Security.Cryptography.Rfc2898DeriveBytes class. ' For example, here is C# code that transforms a password string into ' bytes that can be used as a secret key for symmetric encryption (such as AES, blowfish, 3DES, etc.) ' ' Rfc2898DeriveBytes deriveBytes = new Rfc2898DeriveBytes("secret", System.Text.Encoding.UTF8.GetBytes("saltsalt123"), numIterations); ' byte[] secretKeyBytes = deriveBytes.GetBytes(numBytes); ' (The Rfc2898DeriveBytes computation is really just the PBKDF2 algorithm with SHA-1 hashing.) ' In Chilkat, this is what we do to match... ' First, let's get a test vector with known results. Both Chilkat AND Microsoft should produce ' the same results. RFC 6070 has some PBKDF2 HMAC-SHA1 Test Vectors. Here is one of them: ' Input: ' P = "passwordPASSWORDpassword" (24 octets) ' S = "saltSALTsaltSALTsaltSALTsaltSALTsalt" (36 octets) ' c = 4096 ' dkLen = 25 ' ' Output: ' DK = 3d 2e ec 4f e4 1c 84 9b ' 80 c8 d8 36 62 c0 e4 4a ' 8b 29 1a 96 4c f2 f0 70 ' 38 (25 octets) ' ' Dim crypt As New Chilkat.Crypt2 Dim salt As String = "saltSALTsaltSALTsaltSALTsaltSALTsalt" ' Given that the salt is really binary data (can be any random bunch of bytes), ' we must pass the exact hex string representation of the salt bytes. ' In this case, we're getting the utf-8 byte representation of our salt string, ' which is identical to the us-ascii byte representation because there are no 8bit chars.. Dim saltHex As String = crypt.EncodeString(salt,"utf-8","hex") ' Duplicate the test vector as shown above. Dim dkHex As String = crypt.Pbkdf2("passwordPASSWORDpassword","utf-8","sha1",saltHex,4096,25 * 8,"hex") Debug.WriteLine(dkHex) |
© 2000-2022 Chilkat Software, Inc. All Rights Reserved.