PasswordDeriveBytes クラスとは? わかりやすく解説

PasswordDeriveBytes クラス

PBKDF1 アルゴリズム拡張機能使用してパスワードからキー派生させます

名前空間: System.Security.Cryptography
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

<ComVisibleAttribute(True)> _
Public Class PasswordDeriveBytes
    Inherits DeriveBytes
Dim instance As PasswordDeriveBytes
[ComVisibleAttribute(true)] 
public class PasswordDeriveBytes : DeriveBytes
[ComVisibleAttribute(true)] 
public ref class PasswordDeriveBytes : public
 DeriveBytes
/** @attribute ComVisibleAttribute(true) */ 
public class PasswordDeriveBytes extends DeriveBytes
ComVisibleAttribute(true) 
public class PasswordDeriveBytes extends
 DeriveBytes
解説解説
使用例使用例

PasswordDeriveBytes クラス使用してパスワードからキー作成するコード例次に示します

Imports System
Imports System.Security.Cryptography
Imports System.Text



Module PasswordDerivedBytesExample


    Sub Main(ByVal args() As
 String)

        ' Get a password from the user.
        Console.WriteLine("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.Unicode.GetBytes(Console.ReadLine())

        Dim salt As Byte()
 = createRandomSalt(7)

        ' Create a TripleDESCryptoServiceProvider object.
        Dim tdes As 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.
            Dim pdb As New
 PasswordDeriveBytes(pwd, salt)

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

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

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

        Console.ReadLine()

    End Sub


    '********************************************************
    '* 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.
    '********************************************************
    Function createRandomSalt(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 RNGCryptoServiceProvider.
        Dim rand As New
 RNGCryptoServiceProvider()

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

        ' return the bytes.
        Return randBytes

    End Function


    Sub clearBytes(ByVal Buffer() As
 Byte)
        ' Check arguments.
        If Buffer Is Nothing
 Then
            Throw New ArgumentException("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
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:");

        //********************************************************
        //* Security Note: Never hard-code a password within your
        //* source code.  Hard-coded passwords can be retrieved 
        //* from a compiled assembly.
        //********************************************************

        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 add it to the Key property.
            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];
        }

        // Create a new RNGCryptoServiceProvider.
        RNGCryptoServiceProvider rand = new RNGCryptoServiceProvider();

        // Fill the buffer with random bytes.
        rand.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
 - 1; x++)
        {
            Buffer[x] = 0;
        }
    }
}
using namespace System;
using namespace System::Security::Cryptography;
using namespace System::Text;

// Generates a random salt value of the specified length.
array<Byte>^ CreateRandomSalt(int length)
{
    // Create a buffer
    array<Byte>^ randomBytes;

    if (length >= 1)
    {
        randomBytes = gcnew array <Byte>(length);
    }
    else
    {
        randomBytes = gcnew array <Byte>(1);
    }

    // Create a new RNGCryptoServiceProvider.
    RNGCryptoServiceProvider^ cryptoRNGProvider =
        gcnew RNGCryptoServiceProvider();

    // Fill the buffer with random bytes.
    cryptoRNGProvider->GetBytes(randomBytes);

    // return the bytes.
    return randomBytes;
}

// Clears the bytes in a buffer so they can't later be read from memory.
void ClearBytes(array<Byte>^ buffer)
{
    // Check arguments.
    if (buffer == nullptr)
    {
        throw gcnew ArgumentNullException("buffer");
    }

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

int main(array<String^>^ args)
{

    // Get a password from the user.
    Console::WriteLine("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.
    array<Byte>^ password = Encoding::Unicode->GetBytes(Console::ReadLine());

    array<Byte>^ randomSalt = CreateRandomSalt(7);

    // Create a TripleDESCryptoServiceProvider object.
    TripleDESCryptoServiceProvider^ cryptoDESProvider = 
        gcnew 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^ passwordDeriveBytes = gcnew PasswordDeriveBytes
            (password->ToString(), randomSalt);

        // Create the key and add it to the Key property.
        cryptoDESProvider->Key = passwordDeriveBytes->CryptDeriveKey
            ("TripleDES", "SHA1", 192, cryptoDESProvider->IV);

        Console::WriteLine("Operation complete.");
    }
    catch (Exception^ ex)
    {
        Console::WriteLine(ex->Message);
    }
    finally
    {
        // Clear the buffers
        ClearBytes(password);
        ClearBytes(randomSalt);

        // Clear the key.
        cryptoDESProvider->Clear();
    }

    Console::ReadLine();
}
継承階層継承階層
System.Object
   System.Security.Cryptography.DeriveBytes
    System.Security.Cryptography.PasswordDeriveBytes
スレッド セーフスレッド セーフ
この型の public static (Visual Basic では Shared) メンバはすべて、スレッド セーフです。インスタンス メンバ場合は、スレッド セーフであるとは限りません。
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
PasswordDeriveBytes メンバ
System.Security.Cryptography 名前空間
その他の技術情報
暗号サービス



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「PasswordDeriveBytes クラス」の関連用語

PasswordDeriveBytes クラスのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



PasswordDeriveBytes クラスのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2025 Microsoft.All rights reserved.

©2025 GRAS Group, Inc.RSS