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);
}
}
Выполнить команду
Для локальной разработки. Не используйте в интернете!