【.NET/C#】SYSLIB0041: 一部の Rfc2898DeriveBytes コンストラクターは廃止されました

ネコニウム研究所

PCを利用したモノづくりに関連する情報や超個人的なナレッジを掲載するブログ

【.NET/C#】SYSLIB0041: 一部の Rfc2898DeriveBytes コンストラクターは廃止されました

2024-2-15 |
200px200px

.NETの「SYSLIB0041: 一部の Rfc2898DeriveBytes コンストラクターは廃止されました」をなんとかしたい!

概要

.NETの「SYSLIB0041: 一部の Rfc2898DeriveBytes コンストラクターは廃止されました」をなんとかする手順を掲載する。

仕様書

環境

  • .NET 8

手順書

.NET 7以降では暗号化やハッシュ化する時に使うクラスRfc2898DeriveBytesの一部のコンストラクターが非推奨になったようで、その非推奨のコンストラクターが使われてるとSYSLIB0041が表示される。

SYSLIB0041が表示される例。

using System;
using System.Security.Cryptography;
using System.Text;

string password = "z4izndoYw6lYQFTJ";
string salt = "JVNWwvRc6s_Q3eFP";

var encoder = new UTF8Encoding();
var b = new Rfc2898DeriveBytes(password, encoder.GetBytes(salt), 10000);
var k = b.GetBytes(32);

Console.WriteLine(Convert.ToBase64String(k));

SYSLIB0041が表示されない例。

using System;
using System.Security.Cryptography;
using System.Text;

string password = "z4izndoYw6lYQFTJ";
string salt = "JVNWwvRc6s_Q3eFP";

var encoder = new UTF8Encoding();
var b = new Rfc2898DeriveBytes(password, encoder.GetBytes(salt), 10000, HashAlgorithmName.SHA1);
var k = b.GetBytes(32);

Console.WriteLine(Convert.ToBase64String(k));

Rfc2898DeriveBytesのコンストラクターの最後の引数にashAlgorithmName型でハッシュ化のアルゴリズムを指定すれば、SYSLIB0041`が表示されなくなる。

まとめ(感想文)

日々、非推奨に怯えながら生きている今日この頃。

引用・参考文献