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