github.com/linapex/ethereum-dpos-chinese@v0.0.0-20190316121959-b78b3a4a1ece/crypto/sha3/shake.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:37</date>
    10  //</624342628418195456>
    11  
    12  //版权所有2014 Go作者。版权所有。
    13  //此源代码的使用受BSD样式的控制
    14  //可以在许可文件中找到的许可证。
    15  
    16  package sha3
    17  
    18  //此文件定义了ShakeHash接口,并提供
    19  //用于创建震动实例的函数以及实用程序
    20  //用于将字节散列为任意长度输出的函数。
    21  
    22  import (
    23  	"io"
    24  )
    25  
    26  //shakehash定义哈希函数的接口
    27  //支持任意长度输出。
    28  type ShakeHash interface {
    29  //写将吸收更多的数据进入散列状态。如果输入为
    30  //在从中读取输出后写入。
    31  	io.Writer
    32  
    33  //读取从哈希中读取更多输出;读取会影响哈希的
    34  //状态。(因此,shakehash.read与hash.sum非常不同)
    35  //它从不返回错误。
    36  	io.Reader
    37  
    38  //Clone returns a copy of the ShakeHash in its current state.
    39  	Clone() ShakeHash
    40  
    41  //重置将ShakeHash重置为其初始状态。
    42  	Reset()
    43  }
    44  
    45  func (d *state) Clone() ShakeHash {
    46  	return d.clone()
    47  }
    48  
    49  //new shake128创建一个新的shake128变量输出长度shakehash。
    50  //Its generic security strength is 128 bits against all attacks if at
    51  //至少使用32个字节的输出。
    52  func NewShake128() ShakeHash { return &state{rate: 168, dsbyte: 0x1f} }
    53  
    54  //newshake256创建一个新的shake128变量输出长度shakehash。
    55  //如果
    56  //至少使用64个字节的输出。
    57  func NewShake256() ShakeHash { return &state{rate: 136, dsbyte: 0x1f} }
    58  
    59  //shakesum128将任意长度的数据摘要写入哈希。
    60  func ShakeSum128(hash, data []byte) {
    61  	h := NewShake128()
    62  	h.Write(data)
    63  	h.Read(hash)
    64  }
    65  
    66  //shakesum256将任意长度的数据摘要写入哈希。
    67  func ShakeSum256(hash, data []byte) {
    68  	h := NewShake256()
    69  	h.Write(data)
    70  	h.Read(hash)
    71  }
    72