Разница между js и dart для генерации адреса с закрытым ключом

Я бы хотел написать эту функцию на js в dart

Функция в js


import {ec as EC} from 'elliptic'
import secp256k1 from 'secp256k1'
import sha3 from 'js-sha3'

const ec = new EC('secp256k1')

export function privateKeyToAddress(key) {
  const pubKey = ec
    .keyFromPrivate(key)
    .getPublic()
    .encode('array')

  return toHexString(sha3.keccak_256.array(pubKey.slice(1)).slice(12), true)
}

Я пробовал использовать плагины в pub spec.yaml:

  secp256k1: ^0.2.2
  sha3: ^0.1.2
  quartet: ^0.1.1

и я закодировал дротиком:

String privateKey = "...."; // add a private key value
var pk = PrivateKey.fromHex(privateKey);
var pub = pk.publicKey;
var k = SHA3(256, KECCAK_PADDING, 256);
k.update(utf8.encode(slice(pub.toCompressedHex(), 1)));
var address = slice(HEX.encode(k.digest()), 12);
    

результат (эквивалентное значение адреса) между функцией js и функцией dart не совпадает с тем же значением закрытого ключа...

Не могли бы вы мне помочь, пожалуйста

0 ответов

Другие вопросы по тегам