c# - (何时)是否需要调用 SHA1Managed.Initialize()?

标签 c#

SHA1Managed.Initialize() 实际上做了什么?什么时候需要调用它? The documentation非常稀疏。

最佳答案

检查反编译代码,它只是清除了 bufferexpandedBuffer 字节数组:

public override void Initialize()
{
  this.InitializeState();
  Array.Clear((Array) this._buffer, 0, this._buffer.Length);
  Array.Clear((Array) this._expandedBuffer, 0, this._expandedBuffer.Length);
}

为了简洁起见,InitializeState方法,也是在构造函数中调用的:

private void InitializeState()
{
  this._count = 0L;
  this._stateSHA1[0] = 1732584193U;
  this._stateSHA1[1] = 4023233417U;
  this._stateSHA1[2] = 2562383102U;
  this._stateSHA1[3] = 271733878U;
  this._stateSHA1[4] = 3285377520U;
}

构造时无需调用Initialize。看起来更像是一个重置按钮。

关于c# - (何时)是否需要调用 SHA1Managed.Initialize()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33002738/

相关文章:

c# - 指定的对象或值不存在

javascript - 在 C# 中解析 JSON 文件 (Unity)

c# - 从 DateTime 值中删除正斜杠、冒号和 AM/PM

c# - 在 C# 中是否有类似 [[noreturn]] 的东西来指示编译器该方法永远不会返回值?

c# - 新的 C# 5.0 'async' 和 'await' 关键字是否使用多核?

c# - Windows 服务在程序集加载时锁定

C# object array = null,不释放内存

c# - .NET 反射 - 泛型类型定义的 GetInterfaces() 结果无法与泛型文字类型成功比较

javascript - 基于文本框输入的动态文本框创建

c# - C# 中枚举的替代方法 - 嵌套