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