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