Вывод из HashAlgorithm в.NET Core
В.NET Framework, если бы нам нужно было создать наш собственный алгоритм шифрования, мы могли бы создать наш собственный класс, например:
public class MyAlgorithm: System.Security.Cryptography.HashAlgorithm
{
}
Но в.NET Core это кажется очень ограниченным из-за
public abstract class HashAlgorithm : IDisposable
{
protected HashAlgorithm();
public virtual int HashSize { get; }
public byte[] ComputeHash(byte[] buffer);
public byte[] ComputeHash(byte[] buffer, int offset, int count);
public byte[] ComputeHash(Stream inputStream);
public void Dispose();
public abstract void Initialize();
protected virtual void Dispose(bool disposing);
protected abstract void HashCore(byte[] array, int ibStart, int cbSize);
protected abstract byte[] HashFinal();
}
Там нет таких вещей, как HashSizeValue
или же State
,
Должны ли мы по-прежнему использовать HashAlgorithm
как базовый класс для собственных алгоритмов в.NET Core?
1 ответ
В вашем классе реализуйте
public override int HashSize => 256;
(или значение, которое вы имеете).
Если вы используете HashSizeValue
измените его на HashSize
,
Если вы используете State
прочитал это как protected int State
, В "полном" HashAlgorithm
используется двумя публичными методами (TransformBlock
а также TransformFinalBlock
). Если вам это нужно (и вы используете TransformBlock
а также TransformFinalBlock
) затем скопируйте его из более новой версии.NET Core HashAlgorithm
(вы можете найти его на github). Если вы только проверяли это, то вам это не нужно, и вы можете прокомментировать это (потому что только два отсутствующих метода будут писать это).