建议和反馈

请填写你的反馈内容

问答 > 密码学 > 问答详情
已解决

从.NET Core中的HashAlgorithm派生10LK

在.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();
}

它没有HashSizeValueState类的东西。

我们是否还应该使用HashAlgorithm作为.NET Core中自己的算法的基类?


2019-06-12
0
请先登陆或注册

a110000001472019-06-12

在你的班上,实现一个

public override int HashSize => 256;

(或你拥有的价值)。

如果您使用的是HashSizeValue ,请将其更改为HashSize 。

如果您使用State ,请将其作为protected int State读取。 在“完整” HashAlgorithm它由两个公共方法( TransformBlockTransformFinalBlock )使用。 如果你需要它(并且你正在使用TransformBlockTransformFinalBlock ),那么从较新版本的.NET Core HashAlgorithm复制它(你可以在github上找到它)。 如果你只是检查它,那么你不需要它,你可以评论它(因为只有两个缺少的方法将写它)。


投一票
评论(0)
赞赏(0)
邀请

感谢您的善举,每一次解答会成为新人的灯塔,回答被采纳后获得20算力和相应的LK币奖励