github.com/yinchengtsinghua/golang-Eos-dpos-Ethereum@v0.0.0-20190121132951-92cc4225ed8e/crypto/sha3/doc.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  //包sha3实现sha-3固定输出长度散列函数和
    14  //由FIPS-202定义的Shake变量输出长度哈希函数。
    15  //
    16  //两种类型的散列函数都使用“海绵”结构和keccak
    17  //置换。有关详细规范,请参阅http://keccak.noekeon.org/
    18  //
    19  //
    20  //指导
    21  //
    22  //如果您不确定需要什么功能,请使用Shake256至少64
    23  //输出字节。震动实例比sha3实例快;
    24  //后者必须分配内存以符合hash.hash接口。
    25  //
    26  //如果需要密钥MAC(消息身份验证代码),请在
    27  //输入的密钥,用shake256散列并读取至少32个字节的
    28  //输出。
    29  //
    30  //
    31  //安全优势
    32  //
    33  //sha3-x(x等于224、256、384或512)函数具有安全性
    34  //X位图像前攻击的强度。因为它们只产生“x”
    35  //输出位,它们的抗碰撞性只有“x/2”位。
    36  //
    37  //shake-256和-128函数具有256和
    38  //128 bits against all attacks, provided that at least 2x bits of their output
    39  //使用。分别请求超过64或32字节的输出
    40  //不要增加震动功能的抗碰撞性。
    41  //
    42  //
    43  //海绵结构
    44  //
    45  //海绵从公共伪随机构造一个伪随机函数
    46  //排列,通过将排列应用于“速率+容量”状态
    47  //字节,但隐藏了字节的“容量”。
    48  //
    49  //海绵从零状态开始。使用海绵散列输入,向上
    50  //将输入的字节“速率”转换为海绵状态。海绵
    51  //然后是“满的”,排列应用于“空的”。这个过程是
    52  //重复直到所有输入被“吸收”。然后填充输入。
    53  //消化是以同样的方式从海绵中“挤压”出来的,除了输出
    54  //output is copied out instead of input being XORed in.
    55  //
    56  //海绵的一般安全强度是参数化的,它等于
    57  //容量的一半;容量+速率等于排列的宽度。
    58  //由于keccakf-1600排列宽1600位(200字节),这意味着
    59  //海绵实例的安全强度等于(1600比特率)/2。
    60  //
    61  //
    62  //建议
    63  //
    64  //对于大多数新用途,推荐使用震动功能。他们可以生产
    65  //任意长度的输出。shake256,输出长度至少为
    66  //64字节,针对所有攻击提供256位安全性。Keccak队
    67  //建议大多数应用程序从sha2-512升级。(NIST选择了一个
    68  //更强壮,但速度慢得多,例如Sha3-512的海绵。)
    69  //
    70  //sha-3函数是sha-2函数的“内嵌”替换。
    71  //它们产生相同长度的输出,具有相同的安全强度
    72  //抵御所有攻击。这意味着,特别是,sha3-256只有
    73  //128位抗碰撞,因为它的输出长度是32字节。
    74  package sha3