go - 使用多写入器计算加密数据的哈希值

标签 go

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

有人知道我如何使用单个副本来实现数据加密和散列吗?

    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/

相关文章:

go - 获取父路径

go - for 循环的意外行为

go - 如何用 Golang 解密 AES 加密的传输流段?

go - 在 golang 中发送带附件的电子邮件

go - 我不能 "go get"来自 github 的依赖

go - 将 float64 转换为字节数组

amazon-web-services - Go Lambda 的 AWS ALB 始终返回 "502 Bad Gateway"

go - 如何强制go子流程加载插件?

go - 如何使用 julien schmidt 的路由器避免 Go 中的全局变量?

go - 使用 FUSE 以目录形式命名管道