HashAlgorithm.ComputeHash()是有状态的吗?我需要独立计算多个数据块的哈希值。像这样:using(HashAlgorithmhasher=newActualHashAlgorithm()){for(inti=0;i=numberOfBlocks;i++){byte[]block=getBlock(i);byte[]hash=hasher.ComputeHash(块);//使用散列}}我可以在块之间重用相同的HashAlgorithm对象吗?HashAlgorithm会在调用ComputeHash()后重置状态,还是我需要处理HashAlgorithm对象并为每个新数据块创建一个新对象?使用ComputeHash通常是无状态的,虽然这取决于实际实现......你可以通过调用ComputeHash后访问State来检查它......实际上看到,当你需要在.NET框架下使用哈希时,我强烈推荐它建议手动编写此功能,但不要使用.NET框架。几个月后,我将一个32位.NET程序移植到64位Windows。程序崩溃了。至少我发现在不同的32/64位系统下哈希值是不同的,尽管是同一个.NET程序。我使用Djb算法而不是.NET哈希算法,程序运行良好。本文档是关于Djb哈希算法的,可以用C#重写。这不是一项艰巨的工作。以上是C#学习教程:IsHashAlgorithm.ComputeHash()stateful?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
