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