首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏字节脉搏实验室

    智能合约安全审计之路-随机误用漏洞

    一些概念 智能合约常用的随机数计算方式 keccak256(seed) 常用seed的选取: 私有变量 区块有关状态block.something msg.sender 上述数据的哈希或者运算组合 ? (abi.encodePacked(block.number)))+uint256(keccak256(abi.encodePacked(block.timestamp))); uint256 lucky_number = uint256(keccak256(abi.encodePacked(seed))) % 100; if(lucky_number == guess){ (abi.encodePacked(block.number)))+uint256(keccak256(abi.encodePacked(block.timestamp))); uint256 lucky_number = uint256(keccak256(abi.encodePacked(seed))) % 100; if(lucky_number == guess){

    1.3K10发布于 2020-04-21
  • 来自专栏偷得浮生半日闲

    推荐个纯html的online-tools

    ' : { 'Keccak-224': 'keccak_224.html', 'Keccak-224 File': 'keccak_224 _checksum.html', 'Keccak-256': 'keccak_256.html', 'Keccak-256 File': 'keccak_256_checksum.html', 'Keccak-384': 'keccak_384.html', 'Keccak- 384 File': 'keccak_384_checksum.html', 'Keccak-512': 'keccak_512.html', 'Keccak-512 File': 'keccak_512_checksum.html', }, 'SHAKE' : {

    42310编辑于 2024-09-28
  • 来自专栏深入浅出区块链技术

    智能合约语言 Solidity 教程系列8 - Solidity API

    keccak256(…) returns (bytes32): 使用以太坊的(Keccak-256)计算HASH值。紧密打包参数。 sha3(…) returns (bytes32): keccak256的别名 ripemd160(…) returns (bytes20): 使用RIPEMD-160计算HASH值。紧密打包参数。 keccak256("ab", "c") keccak256("abc") keccak256(0x616263) // hex keccak256(6382179) keccak256(97, 98 , 99) //ascii 如果需要填充,可以使用显式类型转换:keccak256(“\x00\x12”) 与keccak256(uint16(0x12))相同。 注意,常量将使用存储它们所需的最少字节数来打包,例如keccak256(0) == keccak256(uint8(0))和keccak256(0x12345678) == keccak256(uint32

    87720发布于 2018-07-23
  • 来自专栏小工匠技术圈

    【小工匠聊密码学】--消息摘要--SHA3算法

    2012年10月2日,Keccak被选为NIST竞赛的胜利者, 成为SHA-3.。 NIST计算机安全专家Tim Polk说,Keccak的优势在于它与SHA-2设计上存在极大差别,适用于SHA-2的攻击方法将不能作用于Keccak。 1.3 海绵引擎 Keccak的海绵结构中,输入的数据在进行填充后,要经过吸收阶段和挤出阶段,最终生成输出的散列值。 同样地,Keccak 的海绵结构是先将输入的消息吸收到内部状态中,然后再根据内部状态挤出相应的散列值。 1.4 实现难度 Keccak采用了创新的的“海绵引擎”散列消息文本。 1.5 防攻击 Keccak已可以抵御最小的复杂度为2n的攻击,其中N为散列的大小。它具有广泛的安全边际。至目前为止,第三方密码分析已经显示出Keccak没有严重的弱点。

    1.6K30发布于 2018-07-03
  • 来自专栏区块链入门

    如何升级Truffle到v5.0.0使用Solidity v0.5.0新特性?1, 摘要2,操作步骤3, Solidity 0.5.0新特性4,参考

    @1.4.0 install /usr/lib/node_modules/truffle/node_modules/keccak > npm run rebuild || echo "Keccak bindings " > keccak@1.4.0 rebuild /usr/lib/node_modules/truffle/node_modules/keccak > node-gyp rebuild gyp cwd /usr/lib/node_modules/truffle/node_modules/keccak gyp ERR! node -v v9.11.1 gyp ERR! keccak@1.4.0 rebuild: `node-gyp rebuild` npm ERR! Exit status 1 npm ERR! npm ERR! Failed at the keccak@1.4.0 rebuild script. npm ERR! This is probably not a problem with npm.

    2.2K70发布于 2018-12-27
  • 来自专栏Rust语言学习交流

    【Rust项目推荐】Rust写的开发工具包dtool发布0.2.1

    SHA-2 512 SHA-2 512 truncate 224 SHA-2 512 truncate 256 SHA-3 224 SHA-3 256 SHA-3 384 SHA-3 512 SHA-3 keccak 224 SHA-3 keccak 256 SHA-3 keccak 384 SHA-3 keccak 512 RIPEMD-160 比如: $ dtool hash -a md5 0x616263 0x900150983cd24fb0d6963f7d28e17f72

    69710发布于 2019-12-25
  • 来自专栏区块链入门

    第十二课 SOLIDITY语法难点解析及故障排查

    keccak256(...) returns (bytes32): 计算 (tightly packed) arguments 的 Ethereum-SHA-3 (Keccak-256)哈希。 sha3(...) returns (bytes32): 等价于 keccak256。 ("ab", "c") keccak256("abc") keccak256(0x616263) keccak256(6382179) keccak256(97, 98, 99) 如果需要 padding ,可以使用显式类型转换:keccak256("\x00\x12") 和 keccak256(uint16(0x12)) 是一样的。 例如:keccak256(0) == keccak256(uint8(0)),keccak256(0x12345678) == keccak256(uint32(0x12345678))。

    1.4K30发布于 2018-08-10
  • 来自专栏深入浅出区块链技术

    一个蜜罐合约的解析

    { function Try(string memory _response) public payable { if ( answerHash == keccak256 public payable isAdmin { if (answerHash == 0x0) { answerHash = keccak256 admin[admins[i]] = true; } } modifier isAdmin() { require(admin[keccak256 ; i++) { admin[admins[i]] = true; } Start的时候设置问题, answerHash = keccak256(abi.encode public { address addr = address(0x9BEF5148fD530244a14830f4984f2B76BCa0dC58); bytes32 kca = keccak256

    89010编辑于 2022-02-22
  • 来自专栏深入浅出区块链技术

    以太坊合约地址是怎么计算出来的?(附源码实现)

    return abi.encodePacked(bytecode,abi.encode(_owner,_foo)); } // 2.计算合约的地址 // keccak256 (0xff + sender.Address + salt + keccak256(getBytecode)) // 得到最后20bytes function getAddress( bytes memory bytecode,uint _salt) public view returns(address){ bytes32 hash = keccak256( bytes1(0xff), address(this), _salt, keccak256

    1.9K40编辑于 2022-04-08
  • 来自专栏汇智网教程

    web3.sha3

    如果你希望马上开始学习以太坊DApp开发,可以访问汇智网提供的出色的在线互动教程: 以太坊DApp实战开发入门 去中心化电商DApp实战开发 使用keccak-256哈希算法,计算给定字符串的哈希值。 调用: web3.sha3(string, options) 参数: string·: String - 传入的需要使用Keccak-256 SHA3算法进行哈希运算的字符串。 返回值: String - 使用Keccak-256 SHA3算法哈希过的结果。

    1.5K80发布于 2018-05-17
  • 来自专栏安智客

    密码技术之单向散列函数

    3,SHA-3,在05年SHA-1被强碰撞性被攻破的情况下,NIST(美国国家标准技术研究所)开始制定了下一代SHA-3的标准工作,2012年keccak算法成为SHA-3。 由于之前的单向散列函数都是通过循环执行压缩函数的方法来生成散列值,keccak是一种海绵结构因此传统攻击方法无效。 keccak的设计者之一Gilles Van Assche大神,在Github上的主页:https://github.com/gvanas ? keccak是一种海绵结构。对输入数据填充经过absorbing phase吸收和squeezing phase挤出两个阶段,最终输出散列值。还有一种变体双工结构。 ? keccak-f[b]的每一轮包含5个步骤。实质上就是对各个比特位进行运算,详细情况可以Google。

    1.9K30发布于 2018-07-30
  • 来自专栏深入浅出区块链技术

    Uniswap V2 源码学习 (四). 签名和路由

    s) external { require(deadline >= block.timestamp, 'UniswapV2: EXPIRED'); bytes32 digest = keccak256 ( abi.encodePacked( '\x19\x01', DOMAIN_SEPARATOR, keccak256 ( abi.encode( keccak256('EIP712Domain(string name,string version,uint256 chainId, address verifyingContract)'), keccak256(bytes(name)), keccak256(bytes('1')), (b'Uniswap V2'), Web3.keccak(b'1'), chainId, pair_addr ]

    1.6K20编辑于 2022-05-25
  • 来自专栏Ethereum

    《纸上谈兵·solidity》第 31 课:多签钱包在跨链桥中的应用 —— Nomad 事件复盘

    ("tx_one_sig"); address to = hacker; uint amount = 1 ether; bytes32 hash = keccak256 (abi.encodePacked(txHash, to, amount)); bytes32 message = keccak256(abi.encodePacked("\x19Ethereum ("tx_two_sig"); address to = hacker; uint amount = 3 ether; bytes32 hash = keccak256 (abi.encodePacked(txHash, to, amount)); bytes32 message = keccak256(abi.encodePacked("\x19Ethereum ("tx_replay"); address to = hacker; uint amount = 2 ether; bytes32 hash = keccak256

    56610编辑于 2025-09-09
  • 来自专栏丑胖侠

    以太坊solidity智能合约-生成随机数

    function rand(uint256 _length) public view returns(uint256) { uint256 random = uint256(keccak256( 然后通过keccak256算法对其结果进行hash计算,最后转换成uint256的类型。在获得随机数之后,针对随机数取值范围进行取模操作,获得最终的随机数。 需要注意的是在solidity ^0.4.0版本中还可以直接使用keccak256对多个参数进行加密,但在0.5.10版本中keccak256只能提供一个参数。

    2.4K20发布于 2019-08-14
  • 来自专栏火丁笔记

    关于以太坊随机数

    (abi.encodePacked( (block.timestamp).add (block.difficulty).add ((uint256(keccak256 (abi.encodePacked(block.coinbase)))) / (now)).add (block.gaslimit).add ((uint256(keccak256 ) + ((uint256(keccak256(abi.encodePacked(block.coinbase)))) / (now)) + (block.gaslimit ) + ((uint256(keccak256(abi.encodePacked(msg.sender)))) / (now)) + (block.number 合约计算随机数random_number=keccak256(reveal,block1.hash)。如果random_number满足用户下注条件,则用户胜,否则庄家胜。

    89620编辑于 2021-12-14
  • 来自专栏网络安全攻防

    智能合约安全之签名非唯一性

    uint256 _gasPrice, uint256 _nonce) public returns (bool) { bytes32 txid = keccak256 gasPrice, uint256 _nonce) public view returns (bytes32 txHash) { return keccak256 getSignHash(bytes32 _hash) public pure returns (bytes32 signHash) { return keccak256 gasPrice, uint256 _nonce) public view returns (bytes32 txHash) { return keccak256 getSignHash(bytes32 _hash) public pure returns (bytes32 signHash) { return keccak256

    83610发布于 2021-07-21
  • 来自专栏终有链响

    swp添加池子addLiquidity失败

    解决方案 一、添加 工厂KywFactory 添加如下 bytes32 public constant INIT_CODE_PAIR_HASH = keccak256(abi.encodePacked (type(KywPair).creationCode)); 说明: 在智能合约中添加bytes32 public constant INIT_CODE_PAIR_HASH = keccak256(abi.encodePacked 这里详细解释一下: 创建代码的哈希值:keccak256(abi.encodePacked(type(KywPair).creationCode))这一表达式计算的是KywPair合约创建时的完整字节码的哈希值 (address token0, address token1) = sortTokens(tokenA, tokenB); pair = address(uint(keccak256 在PancakeSwap的上下文中,这通常是PancakePair合约的创建代码的Keccak256哈希值。

    47410编辑于 2024-07-29
  • 来自专栏编舟记

    创建数字钱包(一)

    " let publicKey = secp256k1.publicKeyCreate(privateKeyBuffer, false).slice(1); let address = "0x" + keccak256 salt: salt.toString("hex") }; privateKeyToAddress(...)方法里首先通过privateKey产生publicKey,然后使用keccak256 ; let publicKey = secp256k1.publicKeyCreate(privateKeyBuffer, false).slice(1); let address = "0x" + keccak256 (publicKey).slice(-20).toString("hex"); keccak256(publicKey) 产生了32bytes,截取尾部20bytes转换成十六进制之后就是40字符,加上前导 new Error("message authentication code mismatch"); } if (keyObject.version === "1") { key = keccak256

    1.5K20发布于 2019-01-28
  • 来自专栏FreeBuf

    如何使用XposedOrNot来判断自己的密码是否泄露

    整理后的密码用高度安全的散列算法SHA-3(Keccak-512)进行散列运算,并以单向散列存储以供验证。 另外,还需要注意的一点是,我们使用了Keccak-512散列在XoN中搜索和存储数据。 像MD5和SHA1这样的传统散列算法目前已经被弃用了,而且考虑到公开的记录数量巨大,因此这里使用Keccak-512散列算法。 但是,Keccak-512的长度为128个字符,它将占用更多的存储空间。 下面给出的是两个Keccak-512哈希: test - 1e2e9fc2002b002d75198b7503210c05a1baac4560916a3c6d93bcce3a50d7f00fd395bf1647b9abb8d1afcc9c76c289b0c9383ba386a956da4b38934417789e

    1.1K20发布于 2020-02-20
  • 来自专栏陈冠男的游戏人生

    智能合约:solidity语法(二)

    require 来做一些限制,比如 _name 要等于 yichen 才能继续执行,否则报错: function test(string _name) returns (string){ retuire(keccak256 (_name) == keccak256("yichen")); //solidity 不支持字符串直接比较,所以这里用散列值比较 return "hello"; } 如果调用的时候是 test("yichen numberContract 指向另一个合约对象 uint num = numberContract.getNum(msg.sender); //把我们的 favoriteNumber 赋值给 num if语句 if (keccak256 (_name) == keccak256("yichen")) { hello();}

    90541发布于 2020-05-14
领券