github.com/yinchengtsinghua/golang-Eos-dpos-Ethereum@v0.0.0-20190121132951-92cc4225ed8e/crypto/sha3/hashes.go (about)

     1  
     2  //此源码被清华学神尹成大魔王专业翻译分析并修改
     3  //尹成QQ77025077
     4  //尹成微信18510341407
     5  //尹成所在QQ群721929980
     6  //尹成邮箱 yinc13@mails.tsinghua.edu.cn
     7  //尹成毕业于清华大学,微软区块链领域全球最有价值专家
     8  //https://mvp.microsoft.com/zh-cn/PublicProfile/4033620
     9  //版权所有2014 Go作者。版权所有。
    10  //此源代码的使用受BSD样式的控制
    11  //可以在许可文件中找到的许可证。
    12  
    13  package sha3
    14  
    15  //此文件提供用于创建SHA-3实例的函数
    16  //和Shake哈希函数,以及用于哈希的实用函数
    17  //字节。
    18  
    19  import (
    20  	"hash"
    21  )
    22  
    23  //new keccak 256创建新的keccak-256哈希。
    24  func NewKeccak256() hash.Hash { return &state{rate: 136, outputLen: 32, dsbyte: 0x01} }
    25  
    26  //new keccak 512创建新的keccak-512哈希。
    27  func NewKeccak512() hash.Hash { return &state{rate: 72, outputLen: 64, dsbyte: 0x01} }
    28  
    29  //new224创建新的sha3-224哈希。
    30  //它的通用安全强度是224位,可以抵御图像前攻击,
    31  //以及112位数据,以防碰撞攻击。
    32  func New224() hash.Hash { return &state{rate: 144, outputLen: 28, dsbyte: 0x06} }
    33  
    34  //new256创建新的sha3-256哈希。
    35  //它的通用安全强度是256位,可以抵御图像前攻击,
    36  //以及128位来抵御碰撞攻击。
    37  func New256() hash.Hash { return &state{rate: 136, outputLen: 32, dsbyte: 0x06} }
    38  
    39  //new384创建新的sha3-384哈希。
    40  //它的通用安全强度是384位,可以抵御图像前攻击,
    41  //以及192位数据,以防碰撞攻击。
    42  func New384() hash.Hash { return &state{rate: 104, outputLen: 48, dsbyte: 0x06} }
    43  
    44  //new512创建新的sha3-512哈希。
    45  //它的通用安全强度是512位,可以抵御图像前攻击,
    46  //和256位,以防碰撞攻击。
    47  func New512() hash.Hash { return &state{rate: 72, outputLen: 64, dsbyte: 0x06} }
    48  
    49  //SUM224返回数据的SHA3-224摘要。
    50  func Sum224(data []byte) (digest [28]byte) {
    51  	h := New224()
    52  	h.Write(data)
    53  	h.Sum(digest[:0])
    54  	return
    55  }
    56  
    57  //SUM256返回数据的SHA3-256摘要。
    58  func Sum256(data []byte) (digest [32]byte) {
    59  	h := New256()
    60  	h.Write(data)
    61  	h.Sum(digest[:0])
    62  	return
    63  }
    64  
    65  //SUM384返回数据的SHA3-384摘要。
    66  func Sum384(data []byte) (digest [48]byte) {
    67  	h := New384()
    68  	h.Write(data)
    69  	h.Sum(digest[:0])
    70  	return
    71  }
    72  
    73  //SUM512返回数据的sha3-512摘要。
    74  func Sum512(data []byte) (digest [64]byte) {
    75  	h := New512()
    76  	h.Write(data)
    77  	h.Sum(digest[:0])
    78  	return
    79  }