Sha256 Solidity дает неправильные результаты хеширования с использованием параметра longy - PullRequest
0 голосов
/ 24 сентября 2019

У меня есть длинный параметр для хэширования.

1002 * 0x2e9905953abeb84e160f345c4b3f721fc6c3c41b000000000000000000000000d5e36c5acf3a4d091a9d127b14fce5b7f54559d673728c92f8adbf5e8e74582a3f92f58b44cdade105000000000000000000000000000004d20000000000000000000000000000007b01 1004 * Когда я пытаюсь это с функцией SHA256 солидности, это приводит к неправильному хэшу (составитель с солидностью 0.4.23).Я полагаю, что не требуется весь параметр, поскольку он слишком длинный.

Существует ли ограничение для использования параметром хеш-функции в solidity или abi.encodePacked?

pragma solidity ^0.4.15;

contract HashTest {
    function sha3null() public pure returns (bytes32) {
        return sha256(abi.encodePacked());
        // expected: 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470
        // results: 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470
    }

    function sha3one() public pure returns (bytes32) {
        return sha256(abi.encodePacked(1));
        // expected: 0x5fe7f977e71dba2ea1a68e21057beebb9be2ac30c6410aa38d4f3fbe41dcffd2
        // results: 0x5fe7f977e71dba2ea1a68e21057beebb9be2ac30c6410aa38d4f3fbe41dcffd2
    }

    function sha3As() public pure returns (bytes32) {
        return sha256(abi.encodePacked('AAA'));
        // expected: 0x2070504003a07b4713d783ae7a6642ab3b959b7c575c6e4fa4f33eb743db631a
        // results: 0x2070504003a07b4713d783ae7a6642ab3b959b7c575c6e4fa4f33eb743db631a
    }

    // put same data as the function below
    // @params data 0x2e9905953abeb84e160f345c4b3f721fc6c3c41b000000000000000000000000d5e36c5acf3a4d091a9d127b14fce5b7f54559d673728c92f8adbf5e8e74582a3f92f58b44cdade105000000000000000000000000000004d20000000000000000000000000000007b01
    function sha256bytes(bytes data) public pure returns (bytes, bytes32) {
        return (data, sha256(data));
        // expected: 0xb10728ccd431f8cff97c213fab1ec7d8e038f364c1e6a05f0a95011b749ce7ff
        // results: 0x48c3d5a99fd6711bae9746d1c73fb5b9bda7a151257376c0ff7473e3c87428a3
    }

    function sha256data() public pure returns (bytes32) {
        return sha256('0x2e9905953abeb84e160f345c4b3f721fc6c3c41b000000000000000000000000d5e36c5acf3a4d091a9d127b14fce5b7f54559d673728c92f8adbf5e8e74582a3f92f58b44cdade105000000000000000000000000000004d20000000000000000000000000000007b01');
        // expected: 0xb10728ccd431f8cff97c213fab1ec7d8e038f364c1e6a05f0a95011b749ce7ff
        // results: 0xb10728ccd431f8cff97c213fab1ec7d8e038f364c1e6a05f0a95011b749ce7ff
    }
}
...