我希望能够并行计算加密数据的哈希,但是似乎使用如下所示的多重编写器,哈希是使用纯文本字节计算的。

有人知道我如何使用单个副本来实现数据加密和哈希处理吗?

    writer := &cipher.StreamWriter{S: cipher.NewCTR(block, iv), W: writeFile}
    writeFile.Write(iv)

    if _, err := io.Copy(io.MultiWriter(writer, hash), readFile); err != nil {
        fmt.Println("error during crypto: " + err.Error())
        return "", err
    }

最佳答案

您需要将io.MultiWriter移动为cipher.StreamWriter的编写者。这将计算密文而不是纯文本的哈希值:

writer := &cipher.StreamWriter{
    S: cipher.NewCTR(block, iv),
    W: io.MultiWriter(writeFile, hash),
}
writeFile.Write(iv)

if _, err := io.Copy(writer, readFile); err != nil {
    fmt.Println("error during crypto: " + err.Error())
    return "", err
}

关于go - 用多重写入器计算加密数据的哈希,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40190136/

10-12 14:49
查看更多