checksum.go 338 B

123456789101112131415161718192021222324
  1. package utils
  2. import (
  3. "encoding/hex"
  4. "hash"
  5. "io"
  6. )
  7. type CheckSum struct {
  8. io.Reader
  9. Hash hash.Hash
  10. }
  11. func (cs *CheckSum) Read(buf []byte) (int, error) {
  12. n, err := cs.Reader.Read(buf)
  13. if err == nil {
  14. cs.Hash.Write(buf[:n])
  15. }
  16. return n, err
  17. }
  18. func (cs *CheckSum) Sum() string {
  19. return hex.EncodeToString(cs.Hash.Sum(nil))
  20. }