PasswordDeriveBytes Constructors

Definition

Initializes a new instance of the PasswordDeriveBytes class.

Overloads

PasswordDeriveBytes(Byte[], Byte[])

Initializes a new instance of the PasswordDeriveBytes class specifying the password and key salt to use to derive the key.

PasswordDeriveBytes(String, Byte[])

Initializes a new instance of the PasswordDeriveBytes class with the password and key salt to use to derive the key.

PasswordDeriveBytes(Byte[], Byte[], CspParameters)

Initializes a new instance of the PasswordDeriveBytes class specifying the password, key salt, and cryptographic service provider (CSP) to use to derive the key.

PasswordDeriveBytes(String, Byte[], CspParameters)

Initializes a new instance of the PasswordDeriveBytes class with the password, key salt, and cryptographic service provider (CSP) parameters to use to derive the key.

PasswordDeriveBytes(Byte[], Byte[], String, Int32)

Initializes a new instance of the PasswordDeriveBytes class specifying the password, key salt, hash name, and iterations to use to derive the key.

PasswordDeriveBytes(String, Byte[], String, Int32)

Initializes a new instance of the PasswordDeriveBytes class with the password, key salt, hash name, and number of iterations to use to derive the key.

PasswordDeriveBytes(Byte[], Byte[], String, Int32, CspParameters)

Initializes a new instance of the PasswordDeriveBytes class specifying the password, key salt, hash name, iterations, and cryptographic service provider (CSP) to use to derive the key.

PasswordDeriveBytes(String, Byte[], String, Int32, CspParameters)

Initializes a new instance of the PasswordDeriveBytes class with the password, key salt, hash name, number of iterations, and cryptographic service provider (CSP) parameters to use to derive the key.

PasswordDeriveBytes(Byte[], Byte[])

Source:
PasswordDeriveBytes.cs
Source:
PasswordDeriveBytes.cs
Source:
PasswordDeriveBytes.cs

Initializes a new instance of the PasswordDeriveBytes class specifying the password and key salt to use to derive the key.

C#
public PasswordDeriveBytes(byte[] password, byte[]? salt);
C#
public PasswordDeriveBytes(byte[] password, byte[] salt);

Parameters

password
Byte[]

The password to derive the key for.

salt
Byte[]

The key salt to use to derive the key.

Examples

The following code example creates a key from a password using the PasswordDeriveBytes class.

C#
using System;
using System.Security.Cryptography;
using System.Text;

public class PasswordDerivedBytesExample
{

    public static void Main(String[] args)
    {

        // Get a password from the user.
        Console.WriteLine("Enter a password to produce a key:");

        byte[] pwd = Encoding.Unicode.GetBytes(Console.ReadLine());

        byte[] salt = CreateRandomSalt(7);

        // Create a TripleDESCryptoServiceProvider object.
        TripleDESCryptoServiceProvider tdes = new TripleDESCryptoServiceProvider();

        try
        {
            Console.WriteLine("Creating a key with PasswordDeriveBytes...");

            // Create a PasswordDeriveBytes object and then create
            // a TripleDES key from the password and salt.
            PasswordDeriveBytes pdb = new PasswordDeriveBytes(pwd, salt);


            // Create the key and set it to the Key property
            // of the TripleDESCryptoServiceProvider object.
            // This example uses the SHA1 algorithm.
            // Due to collision problems with SHA1, Microsoft recommends SHA256 or better.
            tdes.Key = pdb.CryptDeriveKey("TripleDES", "SHA1", 192, tdes.IV);


            Console.WriteLine("Operation complete.");
        }
        catch (Exception e)
        {
            Console.WriteLine(e.Message);
        }
        finally
        {
            // Clear the buffers
            ClearBytes(pwd);
            ClearBytes(salt);

            // Clear the key.
            tdes.Clear();
        }

        Console.ReadLine();
    }

    //////////////////////////////////////////////////////////
    // Helper methods:
    // CreateRandomSalt: 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.
    //////////////////////////////////////////////////////////

    public static byte[] CreateRandomSalt(int length)
    {
        // Create a buffer
        byte[] randBytes;

        if (length >= 1)
        {
            randBytes = new byte[length];
        }
        else
        {
            randBytes = new byte[1];
        }

        using (RandomNumberGenerator rng = RandomNumberGenerator.Create())
        {
            // Fill the buffer with random bytes.
            rng.GetBytes(randBytes);
        }

        // return the bytes.
        return randBytes;
    }

    public static void ClearBytes(byte[] buffer)
    {
        // Check arguments.
        if (buffer == null)
        {
            throw new ArgumentException("buffer");
        }

        // Set each byte in the buffer to 0.
        for (int x = 0; x < buffer.Length; x++)
        {
            buffer[x] = 0;
        }
    }
}

Remarks

Important

Never hard code a password within your source code. Hard-coded passwords can be retrieved from an assembly using the Ildasm.exe (IL Disassembler), a hex editor, or by simply opening up the assembly in a text editor such as Notepad.exe.

See also

Applies to

.NET 10 and other versions
Product Versions
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

PasswordDeriveBytes(String, Byte[])

Source:
PasswordDeriveBytes.cs
Source:
PasswordDeriveBytes.cs
Source:
PasswordDeriveBytes.cs

Initializes a new instance of the PasswordDeriveBytes class with the password and key salt to use to derive the key.

C#
public PasswordDeriveBytes(string strPassword, byte[]? rgbSalt);
C#
public PasswordDeriveBytes(string strPassword, byte[] rgbSalt);

Parameters

strPassword
String

The password for which to derive the key.

rgbSalt
Byte[]

The key salt to use to derive the key.

Remarks

Important

Never hard-code a password within your source code. Hard coded passwords can be retrieved from an assembly using the Ildasm.exe (IL Disassembler) tool, a hex editor, or by simply opening up the assembly in a text editor like notepad.exe.

See also

Applies to

.NET 10 and other versions
Product Versions
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

PasswordDeriveBytes(Byte[], Byte[], CspParameters)

Source:
PasswordDeriveBytes.cs
Source:
PasswordDeriveBytes.cs
Source:
PasswordDeriveBytes.cs

Initializes a new instance of the PasswordDeriveBytes class specifying the password, key salt, and cryptographic service provider (CSP) to use to derive the key.

C#
public PasswordDeriveBytes(byte[] password, byte[]? salt, System.Security.Cryptography.CspParameters? cspParams);
C#
public PasswordDeriveBytes(byte[] password, byte[] salt, System.Security.Cryptography.CspParameters cspParams);

Parameters

password
Byte[]

The password to derive the key for.

salt
Byte[]

The key salt to use to derive the key.

cspParams
CspParameters

The cryptographic service provider (CSP) parameters for the operation.

Examples

The following code example creates a key from a password using the PasswordDeriveBytes class.

C#
using System;
using System.Security.Cryptography;
using System.Text;

public class PasswordDerivedBytesExample
{

    public static void Main(String[] args)
    {

        // Get a password from the user.
        Console.WriteLine("Enter a password to produce a key:");

        byte[] pwd = Encoding.Unicode.GetBytes(Console.ReadLine());

        byte[] salt = CreateRandomSalt(7);

        // Create a TripleDESCryptoServiceProvider object.
        TripleDESCryptoServiceProvider tdes = new TripleDESCryptoServiceProvider();

        try
        {
            Console.WriteLine("Creating a key with PasswordDeriveBytes...");

            // Create a PasswordDeriveBytes object and then create
            // a TripleDES key from the password and salt.
            PasswordDeriveBytes pdb = new PasswordDeriveBytes(pwd, salt);


            // Create the key and set it to the Key property
            // of the TripleDESCryptoServiceProvider object.
            // This example uses the SHA1 algorithm.
            // Due to collision problems with SHA1, Microsoft recommends SHA256 or better.
            tdes.Key = pdb.CryptDeriveKey("TripleDES", "SHA1", 192, tdes.IV);


            Console.WriteLine("Operation complete.");
        }
        catch (Exception e)
        {
            Console.WriteLine(e.Message);
        }
        finally
        {
            // Clear the buffers
            ClearBytes(pwd);
            ClearBytes(salt);

            // Clear the key.
            tdes.Clear();
        }

        Console.ReadLine();
    }

    //////////////////////////////////////////////////////////
    // Helper methods:
    // CreateRandomSalt: 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.
    //////////////////////////////////////////////////////////

    public static byte[] CreateRandomSalt(int length)
    {
        // Create a buffer
        byte[] randBytes;

        if (length >= 1)
        {
            randBytes = new byte[length];
        }
        else
        {
            randBytes = new byte[1];
        }

        using (RandomNumberGenerator rng = RandomNumberGenerator.Create())
        {
            // Fill the buffer with random bytes.
            rng.GetBytes(randBytes);
        }

        // return the bytes.
        return randBytes;
    }

    public static void ClearBytes(byte[] buffer)
    {
        // Check arguments.
        if (buffer == null)
        {
            throw new ArgumentException("buffer");
        }

        // Set each byte in the buffer to 0.
        for (int x = 0; x < buffer.Length; x++)
        {
            buffer[x] = 0;
        }
    }
}

Remarks

Important

Never hard code a password within your source code. Hard-coded passwords can be retrieved from an assembly using the Ildasm.exe (IL Disassembler) l, a hex editor, or by simply opening up the assembly in a text editor such as Notepad.exe.

See also

Applies to

.NET 10 and other versions
Product Versions
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

PasswordDeriveBytes(String, Byte[], CspParameters)

Source:
PasswordDeriveBytes.cs
Source:
PasswordDeriveBytes.cs
Source:
PasswordDeriveBytes.cs

Initializes a new instance of the PasswordDeriveBytes class with the password, key salt, and cryptographic service provider (CSP) parameters to use to derive the key.

C#
public PasswordDeriveBytes(string strPassword, byte[]? rgbSalt, System.Security.Cryptography.CspParameters? cspParams);
C#
public PasswordDeriveBytes(string strPassword, byte[] rgbSalt, System.Security.Cryptography.CspParameters cspParams);

Parameters

strPassword
String

The password for which to derive the key.

rgbSalt
Byte[]

The key salt to use to derive the key.

cspParams
CspParameters

The CSP parameters for the operation.

Remarks

Important

Never hard-code a password within your source code. Hard coded passwords can be retrieved from an assembly using the Ildasm.exe (IL Disassembler) tool, a hex editor, or by simply opening up the assembly in a text editor like notepad.exe.

See also

Applies to

.NET 10 and other versions
Product Versions
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

PasswordDeriveBytes(Byte[], Byte[], String, Int32)

Source:
PasswordDeriveBytes.cs
Source:
PasswordDeriveBytes.cs
Source:
PasswordDeriveBytes.cs

Initializes a new instance of the PasswordDeriveBytes class specifying the password, key salt, hash name, and iterations to use to derive the key.

C#
public PasswordDeriveBytes(byte[] password, byte[]? salt, string hashName, int iterations);
C#
public PasswordDeriveBytes(byte[] password, byte[] salt, string hashName, int iterations);

Parameters

password
Byte[]

The password to derive the key for.

salt
Byte[]

The key salt to use to derive the key.

hashName
String

The hash algorithm to use to derive the key.

iterations
Int32

The iteration count to use to derive the key.

Remarks

Important

Never hard code a password within your source code. Hard-coded passwords can be retrieved from an assembly using the Ildasm.exe (IL Disassembler), a hex editor, or by simply opening up the assembly in a text editor such as Notepad.exe.

For a list of hash algorithm names, see the CryptoConfig class.

See also

Applies to

.NET 10 and other versions
Product Versions
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

PasswordDeriveBytes(String, Byte[], String, Int32)

Source:
PasswordDeriveBytes.cs
Source:
PasswordDeriveBytes.cs
Source:
PasswordDeriveBytes.cs

Initializes a new instance of the PasswordDeriveBytes class with the password, key salt, hash name, and number of iterations to use to derive the key.

C#
public PasswordDeriveBytes(string strPassword, byte[]? rgbSalt, string strHashName, int iterations);
C#
public PasswordDeriveBytes(string strPassword, byte[] rgbSalt, string strHashName, int iterations);

Parameters

strPassword
String

The password for which to derive the key.

rgbSalt
Byte[]

The key salt to use to derive the key.

strHashName
String

The name of the hash algorithm for the operation.

iterations
Int32

The number of iterations for the operation.

Remarks

Important

Never hard-code a password within your source code. Hard coded passwords can be retrieved from an assembly using the Ildasm.exe (IL Disassembler) tool, a hex editor, or by simply opening up the assembly in a text editor like notepad.exe.

For a list of hash algorithm names, see the CryptoConfig class.

See also

Applies to

.NET 10 and other versions
Product Versions
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

PasswordDeriveBytes(Byte[], Byte[], String, Int32, CspParameters)

Source:
PasswordDeriveBytes.cs
Source:
PasswordDeriveBytes.cs
Source:
PasswordDeriveBytes.cs

Initializes a new instance of the PasswordDeriveBytes class specifying the password, key salt, hash name, iterations, and cryptographic service provider (CSP) to use to derive the key.

C#
public PasswordDeriveBytes(byte[] password, byte[]? salt, string hashName, int iterations, System.Security.Cryptography.CspParameters? cspParams);
C#
public PasswordDeriveBytes(byte[] password, byte[] salt, string hashName, int iterations, System.Security.Cryptography.CspParameters cspParams);

Parameters

password
Byte[]

The password to derive the key for.

salt
Byte[]

The key salt to use to derive the key.

hashName
String

The hash algorithm to use to derive the key.

iterations
Int32

The iteration count to use to derive the key.

cspParams
CspParameters

The cryptographic service provider (CSP) parameters for the operation.

Remarks

Important

Never hard code a password within your source code. Hard-coded passwords can be retrieved from an assembly using the Ildasm.exe (IL Disassembler), a hex editor, or by simply opening up the assembly in a text editor such as Notepad.exe.

For a list of hash algorithm names, see the CryptoConfig class.

See also

Applies to

.NET 10 and other versions
Product Versions
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

PasswordDeriveBytes(String, Byte[], String, Int32, CspParameters)

Source:
PasswordDeriveBytes.cs
Source:
PasswordDeriveBytes.cs
Source:
PasswordDeriveBytes.cs

Initializes a new instance of the PasswordDeriveBytes class with the password, key salt, hash name, number of iterations, and cryptographic service provider (CSP) parameters to use to derive the key.

C#
public PasswordDeriveBytes(string strPassword, byte[]? rgbSalt, string strHashName, int iterations, System.Security.Cryptography.CspParameters? cspParams);
C#
public PasswordDeriveBytes(string strPassword, byte[] rgbSalt, string strHashName, int iterations, System.Security.Cryptography.CspParameters cspParams);

Parameters

strPassword
String

The password for which to derive the key.

rgbSalt
Byte[]

The key salt to use to derive the key.

strHashName
String

The name of the hash algorithm for the operation.

iterations
Int32

The number of iterations for the operation.

cspParams
CspParameters

The CSP parameters for the operation.

Remarks

Important

Never hard-code a password within your source code. Hard coded passwords can be retrieved from an assembly using the Ildasm.exe (IL Disassembler) tool, a hex editor, or by simply opening up the assembly in a text editor like notepad.exe.

For a list of hash algorithm names, see the CryptoConfig class.

See also

Applies to

.NET 10 and other versions
Product Versions
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1