Вывод из 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). Если вы только проверяли это, то вам это не нужно, и вы можете прокомментировать это (потому что только два отсутствующих метода будут писать это).

Другие вопросы по тегам