--- /dev/null
+#!/bin/sh -e
+
+go build -ldflags=-s ./cmd/goshake128
+go build -ldflags=-s ./cmd/goshake256
--- /dev/null
+package main
+
+import (
+ "bufio"
+ "encoding/hex"
+ "fmt"
+ "io"
+ "os"
+
+ "golang.org/x/crypto/sha3"
+)
+
+func main() {
+ h := sha3.NewShake128()
+ dgst := make([]byte, 32)
+ var err error
+ if _, err = io.Copy(h, bufio.NewReaderSize(os.Stdin, 1<<20)); err != nil {
+ panic(err)
+ }
+ if _, err = io.ReadFull(h, dgst); err != nil {
+ panic(err)
+ }
+ fmt.Println(hex.EncodeToString(dgst))
+}
--- /dev/null
+package main
+
+import (
+ "bufio"
+ "encoding/hex"
+ "fmt"
+ "io"
+ "os"
+
+ "golang.org/x/crypto/sha3"
+)
+
+func main() {
+ h := sha3.NewShake256()
+ dgst := make([]byte, 64)
+ var err error
+ if _, err = io.Copy(h, bufio.NewReaderSize(os.Stdin, 1<<20)); err != nil {
+ panic(err)
+ }
+ if _, err = io.ReadFull(h, dgst); err != nil {
+ panic(err)
+ }
+ fmt.Println(hex.EncodeToString(dgst))
+}
--- /dev/null
+module go.stargrave.org/gosha3
+
+go 1.20
+
+require golang.org/x/crypto v0.8.0
+
+require golang.org/x/sys v0.7.0 // indirect
--- /dev/null
+golang.org/x/crypto v0.8.0 h1:pd9TJtTueMTVQXzk8E2XESSMQDj/U7OUu0PqJqPXQjQ=
+golang.org/x/crypto v0.8.0/go.mod h1:mRqEX+O9/h5TFCrQhkgjo2yKi0yYA+9ecGkdQoHrywE=
+golang.org/x/sys v0.7.0 h1:3jlCCIQZPdOYu1h8BkNvLz8Kgwtae2cagcG/VamtZRU=
+golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=