建议和反馈

请填写你的反馈内容

问答 > 密码学 > 问答详情
求助中

从.NET Core中的HashAlgorithm派生

在.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

592

0

撰写答案

请先登陆或注册

1个回答

a11000000147

2019-06-12

在你的班上,实现一个

public override int HashSize => 256;

(或你拥有的价值)。

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

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


0
赞赏(0)

公司名称:北京链客行科技有限公司

联系方式:010-67707199

ICP备案号:京ICP备18032136号

Copyright:链客区块链技术问答社区 版权所有

邀请

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