PHP WebShell

Текущая директория: /var/www/bitcardoApp/models/crypto

Просмотр файла: tron_utils.php

<?php

namespace Models\Crypto;

use kornrunner\Keccak;
use Elliptic\EC;

class TronUtils
{
    /**
     * Decode Base58Check TRON address → raw bytes
     */
    public static function base58check_decode($base58)
    {
        $alphabet = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';

        $decoded = gmp_init(0);
        $multi = gmp_init(1);

        for ($i = strlen($base58) - 1; $i >= 0; $i--) {
            $char = strpos($alphabet, $base58[$i]);
            if ($char === false) {
                return false;
            }
            $decoded = gmp_add($decoded, gmp_mul($multi, $char));
            $multi = gmp_mul($multi, 58);
        }

        $hex = gmp_strval($decoded, 16);
        if (strlen($hex) % 2 !== 0) {
            $hex = "0" . $hex;
        }

        return hex2bin($hex);
    }

    /**
     * Sign TX raw_data → signature bytes
     */
    public static function sign_with_private_key($data, $privateKey)
    {
        $ec = new EC('secp256k1');

        // Hash TX
        $hash = Keccak::hash($data, 256);

        $key = $ec->keyFromPrivate($privateKey);

        $signature = $key->sign($hash, ['canonical' => true]);

        return $signature->r->toString(16) . $signature->s->toString(16);
    }
}

Выполнить команду


Для локальной разработки. Не используйте в интернете!