c# - SHA256 可以多线程来提高速度吗?

标签 c# multithreading encryption hash

<分区>

using (FileStream stream = File.OpenRead(path))
{
    SHA256Managed sha = new SHA256Managed();
    byte[] hash = sha.ComputeHash(stream);
    return RSAEncrypt.GenerateDigitalSignature(hash,privateKey);
}

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

最佳答案

如果这需要 SHA256 而不是其他任何东西,那么您无能为力。

如果您可以决定哈希值,则可以使用默克尔树构造。两个 Merkle 级别足以使您的 CPU 达到最大。这将很容易实现。

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

关于c# - SHA256 可以多线程来提高速度吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36665232/

相关文章:

c# - 代码契约(Contract)链接调用?

java - 如何使用 CompletableFuture 打开列表中的所有结果并将其收集到线程中?

java - java中线程的使用方法

ios - 如何测试 Core Data SQLite 文件是否加密?

php - 正确使用 php openssl_encrypt 的方法

c# - Sitecore 使用嵌套转发器正确显示父项和子项

c# - 从 Azure Blob 存储读取文本文件值

java - 使用对称/预共享 key 的安全通信是否发生在普通套接字或 SSLSocket 上是否重要?如何?

c# - 使用paint时如何在WinForms中实现垂直和水平滚动条?

c++ - 创建线程总是对性能有好处吗?