github.com/linapex/ethereum-dpos-chinese@v0.0.0-20190316121959-b78b3a4a1ece/crypto/sha3/hashes.go (about) 1 2 //<developer> 3 // <name>linapex 曹一峰</name> 4 // <email>linapex@163.com</email> 5 // <wx>superexc</wx> 6 // <qqgroup>128148617</qqgroup> 7 // <url>https://jsq.ink</url> 8 // <role>pku engineer</role> 9 // <date>2019-03-16 12:09:36</date> 10 //</624342627927461888> 11 12 //版权所有2014 Go作者。版权所有。 13 //此源代码的使用受BSD样式的控制 14 //可以在许可文件中找到的许可证。 15 16 package sha3 17 18 //此文件提供用于创建SHA-3实例的函数 19 //和Shake哈希函数,以及用于哈希的实用函数 20 //字节。 21 22 import ( 23 "hash" 24 ) 25 26 //new keccak 256创建新的keccak-256哈希。 27 func NewKeccak256() hash.Hash { return &state{rate: 136, outputLen: 32, dsbyte: 0x01} } 28 29 //new keccak 512创建新的keccak-512哈希。 30 func NewKeccak512() hash.Hash { return &state{rate: 72, outputLen: 64, dsbyte: 0x01} } 31 32 //new224创建新的sha3-224哈希。 33 //它的通用安全强度是224位,可以抵御图像前攻击, 34 //以及112位数据,以防碰撞攻击。 35 func New224() hash.Hash { return &state{rate: 144, outputLen: 28, dsbyte: 0x06} } 36 37 //new256创建新的sha3-256哈希。 38 //它的通用安全强度是256位,可以抵御图像前攻击, 39 //以及128位来抵御碰撞攻击。 40 func New256() hash.Hash { return &state{rate: 136, outputLen: 32, dsbyte: 0x06} } 41 42 //new384创建新的sha3-384哈希。 43 //它的通用安全强度是384位,可以抵御图像前攻击, 44 //以及192位数据,以防碰撞攻击。 45 func New384() hash.Hash { return &state{rate: 104, outputLen: 48, dsbyte: 0x06} } 46 47 //new512创建新的sha3-512哈希。 48 //它的通用安全强度是512位,可以抵御图像前攻击, 49 //和256位,以防碰撞攻击。 50 func New512() hash.Hash { return &state{rate: 72, outputLen: 64, dsbyte: 0x06} } 51 52 //SUM224返回数据的SHA3-224摘要。 53 func Sum224(data []byte) (digest [28]byte) { 54 h := New224() 55 h.Write(data) 56 h.Sum(digest[:0]) 57 return 58 } 59 60 //SUM256返回数据的SHA3-256摘要。 61 func Sum256(data []byte) (digest [32]byte) { 62 h := New256() 63 h.Write(data) 64 h.Sum(digest[:0]) 65 return 66 } 67 68 //SUM384返回数据的SHA3-384摘要。 69 func Sum384(data []byte) (digest [48]byte) { 70 h := New384() 71 h.Write(data) 72 h.Sum(digest[:0]) 73 return 74 } 75 76 //SUM512返回数据的sha3-512摘要。 77 func Sum512(data []byte) (digest [64]byte) { 78 h := New512() 79 h.Write(data) 80 h.Sum(digest[:0]) 81 return 82 } 83