備忘録

備忘録

C# Rfc2898DeriveBytesでSHA1以外を利用して任意のバイト配列を取得する方法

Ⅰ. はじめに

Rfc2898DeriveBytes のデフォルトは HMACSHA1(HashAlgorithmName.SHA1)です。

任意のハッシュアルゴリズムとして以下が指定可能です。

  • HashAlgorithmName.MD5
  • HashAlgorithmName.SHA1
  • HashAlgorithmName.SHA256
  • HashAlgorithmName.SHA384
  • HashAlgorithmName.SHA512

Ⅱ. 環境

  • .NET Framework 4.7.2 以上
  • .NET Core 2.0 以上
  • .NET Standard 2.1 以上

Ⅲ. サンプルプログラム

using System.Security.Cryptography;

var password = "mypassword";
var salt = Encoding.ASCII.GetBytes("12345678");
var iterations = 1024;
var hashAlgorithm = HashAlgorithmName.SHA256;

using var deriveBytes = new Rfc2898DeriveBytes(password, salt, iterations, hashAlgorithm);
var bytes = deriveBytes.GetBytes(16);
Console.WriteLine(BitConverter.ToString(bytes));

実行結果

8D-F1-59-A5-46-88-F9-A2-3E-56-2A-FE-CB-8F-5B-73