package chksum import ( "bytes" "fmt" "hash" "strconv" ) type digest struct { size int } func (d *digest) Write(p []byte) (n int, err error) { n = len(p) d.size += n return } func (d *digest) Sum(b []byte) []byte { buf := new(bytes.Buffer) fmt.Fprint(buf, d.size) return append(b, buf.Bytes()...) } func (d *digest) Reset() { d.size = 0 } func (d *digest) Size() int { return 1 } func (d *digest) BlockSize() int { return 1 } func NewSize() hash.Hash { return &digest{} } func ParseSize(s string) ([]byte, error) { n, err := strconv.Atoi(s) if err != nil { return nil, err } buf := new(bytes.Buffer) fmt.Fprint(buf, n) return buf.Bytes(), nil }