C# SHA256是否可以使用多线程来提高速度?

C# SHA256是否可以使用多线程来提高速度?,c#,multithreading,encryption,hash,C#,Multithreading,Encryption,Hash,我创建散列的散列方法是否可以将文件拆分为更小的部分使用缓冲区并将结果粘回一个散列?我这样问是因为散列大文件(+-1gb)可能需要20秒才能在单独的线程上完成运行。甚至可以按照我描述的方式对其进行多线程处理吗?如果需要使用SHA256,而不需要其他任何东西,那么您就无能为力 如果可以决定散列,可以使用Merkle树构造。两个Merkle级别足以使您的CPU最大化。这将很容易实现 基于SHA256的Merke哈希不会产生SHA256输出。这里有一个有趣的可能性:。请记住,散列的意思是很慢的。如果你能

我创建散列的散列方法是否可以将文件拆分为更小的部分使用缓冲区并将结果粘回一个散列?我这样问是因为散列大文件(+-1gb)可能需要20秒才能在单独的线程上完成运行。甚至可以按照我描述的方式对其进行多线程处理吗?

如果需要使用SHA256,而不需要其他任何东西,那么您就无能为力

如果可以决定散列,可以使用Merkle树构造。两个Merkle级别足以使您的CPU最大化。这将很容易实现


基于SHA256的Merke哈希不会产生SHA256输出。

这里有一个有趣的可能性:。请记住,散列的意思是很慢的。如果你能快速散列,顺便说一句,和彩虹表有什么区别?然后,当你发现你的文件在7秒或更短的时间内就可以缩减时,你会有什么感觉?@code4life哈希并不意味着速度慢。一些使用,如密码散列,需要花费时间,这是通过迭代完成的。散列文件需要尽可能快。我愚蠢的iPhone以1GB/s左右的速度运行SHA-256。@code4life因此答案是否定的,你不能对sha256使用多线程:(?这需要是一个SHA256还是可能是其他的?@code4life实际上另一篇帖子也说了同样的话:对于md5 SHA1256512这样的常见哈希,没有多线程算法……答案建议使用另一个算法。这是Maarten Bodewes对链接问题给出的答案的浓缩版本(由code4life链接)。为什么不投票关闭一个副本?@ArtjomB。这个问题不是一个副本,尽管答案两者都有。答案是多线程是不可能的,使用Merkle树。@雇佣军?Frank你这是什么意思?我同意,但我想知道你为什么这么说。你不同意什么吗?还要注意,Merkle树永远不会给你答案这是你的要求。
using (FileStream stream = File.OpenRead(path))
{
    SHA256Managed sha = new SHA256Managed();
    byte[] hash = sha.ComputeHash(stream);
    return RSAEncrypt.GenerateDigitalSignature(hash,privateKey);
}