你正在使用的Go版本是什么( go version
)?
$ go version
go version go1.13.5 linux/amd64
这个问题在最新版本中是否重现?
是的
你正在使用什么操作系统和处理器架构( go env
)?
go env
输出
$ go env
GO111MODULE=""
GOARCH="amd64"
GOBIN=""
GOCACHE="/home/sh7dm/.cache/go-build"
GOENV="/home/sh7dm/.config/go/env"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GONOPROXY=""
GONOSUMDB=""
GOOS="linux"
GOPATH="/home/sh7dm/go"
GOPRIVATE=""
GOPROXY="https://proxy.golang.org,direct"
GOROOT="/usr/local/go"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64"
GCCGO="gccgo"
AR="ar"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
GOMOD=""
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build981542473=/tmp/go-build -gno-record-gcc-switches"
你做了什么?
我找到了一个名为BLAKE3的新加密哈希函数:
https://github.com/BLAKE3-team/BLAKE3
它还有Go实现:
https://github.com/lukechampine/blake3
你期望看到什么?
Go中的BLAKE3支持
你看到了什么?
Go中没有BLAKE3支持
8条答案
按热度按时间2hh7jdfx1#
我可以在
x/crypto
中整合https://github.com/lukechampine/blake3。stszievb2#
你好,
Go中没有BLAKE3支持。但是这里有BLAKE3的支持:https://github.com/lukechampine/blake3 。你可以使用
go get
下载库并将其用于你的项目中。我可以把https://github.com/lukechampine/blake3集成到x/crypto中。我不认为你可以做到这一点,除非代码作者签署了CLA并同意重新许可代码(它是MIT许可证,我不知道它是否与Go的BSD许可证兼容)。无论如何,这并不像“将代码复制到lukechampine/blake3中,然后粘贴到x/crypto中”那么简单。
你所要求的是在一个(半)官方支持的BLAKE3实现中使用x/crypto。这是一个合理的请求,但将来需要有人去做这项工作并维护代码。这并不像在x/crypto中放入另一个实现并留在那里那么简单。
fzwojiic3#
当然,所有这些都应该被仓库的所有者允许,但我们可以从
x/crypto
导入和导出模块。cnh2zyt34#
我很高兴将我的包转移到
x/crypto
。它确实需要一个汇编实现,也许被谷歌"祝福"会激励有人贡献一个。然而,BLAKE3非常新——据我所知,还没有人发布过适当的密码分析或攻击。所以我们可能想等待更多的审查再添加它。7fyelxc55#
哦,你好!我现在投票支持添加它,但当然这是关于Go开发者的决定。我很高兴你也对改进标准库感兴趣!
kuuvgm7e6#
https://github.com/zeebo/blake3 最近以CC0发布,并优化了AVX2和SSE4.1的实现。
8dtrkrch7#
距离上次讨论已经大约一年了。大家还有什么想法吗?
xfyts7mz8#
我之前评论的更新:
它确实需要一个汇编实现,也许被谷歌"祝福"会激励有人贡献一个。
我后来自己为AVX2和AVX-512添加了(由avo生成的)汇编代码,所以性能至少应该与zeebo/blake3和官方Rust实现具有竞争力(我还没有在一台合适的桌面机器上对其进行基准测试)。