【.NET/C#】SYSLIB0041: 一部の Rfc2898DeriveBytes コンストラクターは廃止されました
2024-2-15 | .NET
.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`が表示されなくなる。
まとめ(感想文)
日々、非推奨に怯えながら生きている今日この頃。