2016-10-22 36 views
1

我曾希望能够并行计算加密数据的哈希值,但好像使用如下的多重写入器,哈希值正在以明文字节计算。使用多作业器计算加密数据的哈希值

任何人都知道我可以如何使用单个副本来实现加密数据和哈希?

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 
    } 

回答

2

您需要将您的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 
} 
+0

哎哟,我怎么错过了?谢谢! –