<?php use kornrunner\Keccak; use BitWasp\Bitcoin\Key\Factory\PrivateKeyFactory; use BitWasp\Bitcoin\Crypto\Random\Random; include_once "../libraries/vendor/autoload.php"; include_once("html_iframe_header.php"); function toChecksumAddress($address) { $address = strtolower(str_replace('0x', '', $address)); $hash = Keccak::hash(strtolower($address), 256); $checksumAddress = '0x'; for($i=0;$i<strlen($address);$i++) { if (intval($hash{$i}, 16) > 7) { $checksumAddress .= strtoupper($address{$i}); } else { $checksumAddress .= $address{$i}; } } return $checksumAddress; } if ($_SERVER['REQUEST_METHOD'] == 'POST') { try { $privKeyFactory = new PrivateKeyFactory(); if (!$_POST['input'] OR ctype_xdigit($_POST['input'])) { if (!$_POST['input']) { $rbg = new Random(); $privateKey = $privKeyFactory->generateUncompressed($rbg); } else { $privateKey = $privKeyFactory->fromHexUncompressed($_POST['input']); } } $publicKey = $privateKey->getPublicKey(); $publicKey = substr($publicKey->getHex(), 2); $madeUpEthAddress = $publicKey; $hash = Keccak::hash(hex2bin($madeUpEthAddress), 256); // Ethereum address has 20 bytes length. (40 hex characters long) // We only need the last 20 bytes as Ethereum address $ethAddress = toChecksumAddress('0x' . substr($hash, -40)); ?> <div class="table-responsive"> <table border=0 class='table'> <tr style='background-color:#f0f0f0'><td>Address</td><td><?php echo $ethAddress?></td></tr> <tr><td>Private Key Hex</td><td><?php echo $privateKey->getHex()?></td></tr> <tr style='background-color:#f0f0f0'><td>Public Key Hex</td><td><?php echo $publicKey?></td></tr> </table> </div> <?php } catch (Exception $e) { $errmsg .= "Problem found. " . $e->getMessage(); } } if ($errmsg) { ?> <div class="alert alert-danger"> <strong>Error!</strong> <?php echo $errmsg?> </div> <?php } ?> <form action='' method='post'> <div class="form-group"> <label for="input">Private Key (Hex):</label> <input class="form-control" type='text' name='input' id='input' value='<?php echo $_POST['input']?>'> <small>Put empty if you want system assign you a random private key.</small> </div> <input type='submit' class="btn btn-success btn-block"/> </form> <?php include_once("html_iframe_footer.php");