2016-10-22 4 views
1

Ich hatte gehofft, in der Lage sein, den Hash der verschlüsselten Daten parallel zu berechnen, aber es scheint wie mit einem multiplen Schreiber wie unten, der Hash wird mit Klartext-Bytes berechnet.Rechnen Hash verschlüsselter Daten mit einem Multiwriter

Wer weiß, wie ich eine einzelne Kopie verwenden kann, um sowohl die Daten zu verschlüsseln als auch zu hashen?

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 
    } 

Antwort

2

Sie benötigen io.MultiWriter zu sein der Verfasser des cipher.StreamWriter zu bewegen. Dies berechnet den Hash des Cipher-Texts anstelle von reinem Text:

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

autsch, wie habe ich das übersehen? Vielen Dank! –

Verwandte Themen