在 .NET 6 代碼中如何在 C# 中對字串進行 SHA512?
var data = Encoding.UTF8.GetBytes("key");
byte[] hash;
using (SHA512 shaM = new SHA512Managed())
hash = shaM.ComputeHash(data);
拋出警告
Warning SYSLIB0021 'SHA512Managed' is obsolete:
'Derived cryptographic types are obsolete.
Use the Create method on the base type instead.'
Visual Studio 2022 不為此提供代碼更改。如何用 .NET 6 中的正確代碼替換此代碼?
代碼是從 ASP.NET MVC 控制器呼叫的。
uj5u.com熱心網友回復:
就我而言,我在 .NET 5 中使用 RNGCryptoServiceProvider,但是當我更新到 .NET 6 時,我收到了同樣的警告。在這個問題中閱讀了它之后,我改變了我的代碼:
public string HashPassword(string plainPassword)
{
if (string.IsNullOrEmpty(plainPassword))
{
throw new ArgumentNullException(nameof(plainPassword));
}
var cryptoProvider = new RNGCryptoServiceProvider();
byte[] salt = new byte[SaltByteSize];
cryptoProvider.GetBytes(salt);
byte[] hash = GetPbkdf2Bytes(plainPassword, salt, Pbkdf2Iterations, HashByteSize);
return $"{Pbkdf2Iterations}:{Convert.ToBase64String(salt)}:{Convert.ToBase64String(hash)}";
}
對此:
public string HashPassword(string plainPassword)
{
if (string.IsNullOrEmpty(plainPassword))
{
throw new ArgumentNullException(nameof(plainPassword));
}
byte[] salt = RandomNumberGenerator.GetBytes(SaltByteSize);
byte[] hash = GetPbkdf2Bytes(plainPassword, salt, Pbkdf2Iterations, HashByteSize);
return $"{Pbkdf2Iterations}:{Convert.ToBase64String(salt)}:{Convert.ToBase64String(hash)}";
}
我知道這不是完全相同的課程,但它們是相關的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/367777.html
