Wie erzeuge ich keccak256(STRING,INTEGER) aus Javascript?

In meinem Solidity-Code verwende ich bytes32„Generated by“, keccak256("STRING_VALUE',INTEGER)um Werte in der Karte zu speichern.

Einer der Beispielwerte, die generiert werden, ist

0x728021dd1e605706a029ef0f0a96028fab0d170608cbfcc8b28ff7786d985dcf

Jetzt möchte ich diesen Hash in meinem JS-Code generieren, ich habe versucht, Bibliotheken wie js-sha3, keccak, solidity-sha3. Keiner von ihnen nimmt Integer als Parameter und gibt auch einen Hash zurück, der für das, was oben generiert wird, irrelevant ist.

Wie erzeuge ich ähnlichen Hash im JS?

Antworten (1)

Konvertieren Sie einfach Ihre Ganzzahl in Basis 16 und hängen Sie sie an die ursprüngliche Zeichenfolge an, um schließlich den Hash zu berechnen. Es wird dasselbe sein.

function solSha3 (...args) {
    args = args.map(arg => {
        if (typeof arg === 'string') {
            if (arg.substring(0, 2) === '0x') {
                return arg.slice(2)
            } else {
                return web3.toHex(arg).slice(2)
            }
        }

        if (typeof arg === 'number') {
            return leftPad((arg).toString(16), 64, 0)
        } else {
          return ''
        }
    })

    args = args.join('')

    return '0x' + web3.sha3(args, { encoding: 'hex' })
}

Weitere Details finden Sie unter Github-Link