C#でBcriptを使用してパスワードをハッシュ化する方法

csharp C#

概要

この記事では、C#を使用してパスワードをソルトを使用してのハッシュ化やストレッチングを行う暗号化/複合化アルゴリズムであるBcryptを使用する方法を記載します。

Bcryptのイメージは以下の通りです。

C#でBcryptを使用する方法

C#でBcryptを使用してパスワードをハッシュ化する方法、またパスワードとハッシュ値が一致するかを判定する方法を記載します。

C#にてBcryptを使用するにはNugetから、「BCrypt.Net-Next」をインストールしておく必要があります。

ハッシュ値を生成するには、 BCrypt.Net.BCrypt.HashPasswordメソッドを使用します。また、ハッシュ値を検証するには、BCrypt.Net.BCrypt.Verifyメソッドを使用します。

サンプルソースを以下に記載します。(.NET Core 3.1で記載)

using System;

namespace BcryptTestApp
{
    class Program
    {
        static void Main(string[] args)
        {
            string password = "password";

            // ハッシュ化
            string passwordHash = BCrypt.Net.BCrypt.HashPassword(password);
            Console.WriteLine(passwordHash);
            // $2a$11$NM0Zlgrb8KCbwaVNu9241uVrdcdFSWbmfDvB6RVhgXAB09a4K1bcy

            //検証
            bool isVerifySuccess = BCrypt.Net.BCrypt.Verify("password", passwordHash);
            Console.WriteLine(isVerifySuccess);
            // True

            isVerifySuccess = BCrypt.Net.BCrypt.Verify("invalid password", passwordHash);
            Console.WriteLine(isVerifySuccess);
            // False
        }
    }
}

コメント