public static string GetPublicKey(string PrivateKey) { var key = new EthECKey(PrivateKey.HexToByteArray(), true); var initaddr = new Sha3Keccack().CalculateHash(key.GetPubKeyNoPrefix()); var addr = new byte[initaddr.Length - 12]; Array.Copy(initaddr, 12, addr, 0, initaddr.Length - 12); string PublicKey = new AddressUtil().ConvertToChecksumAddress(addr.ToHex()); return(PublicKey); }
public void ShouldSignEncodeTransactionAndRecoverPublicAddress() { var privateKey = "b5b1870957d373ef0eeffecc6e4812c0fd08f554b37b233526acc331bf1544f7"; var sendersAddress = "12890d2cce102216644c59daE5baed380d84830c"; var publicKey = "87977ddf1e8e4c3f0a4619601fc08ac5c1dcf78ee64e826a63818394754cef52457a10a599cb88afb7c5a6473b7534b8b150d38d48a11c9b515dd01434cceb08"; var key = new EthECKey(privateKey.HexToByteArray(), true); var hash = "test".ToHexUTF8().HexToByteArray(); var signature = key.Sign(hash); Assert.True(key.Verify(hash, signature)); Assert.Equal(key.GetPubKeyNoPrefix().ToHex(), publicKey); Assert.Equal(sendersAddress.EnsureHexPrefix().ToLower(), key.GetPublicAddress().EnsureHexPrefix().ToLower()); }
internal string GetStartLowerCase(EthECKey key, int length) { byte[] hash = _sha3Keccack.CalculateHash(key.GetPubKeyNoPrefix()); byte[] numArray = new byte[hash.Length - 12]; Array.Copy(hash, 12, numArray, 0, hash.Length - 12); string address = "0x"; for (int i = 0; i < numArray.Length; i++) { address += numArray[i].ToString("x2"); if (address.Length >= length) { return(address); } } return(address); }
private static void Main(string[] args) { //string key = EncryptionUtils.GetRandomBytes(32).ToHex(); //string key = "0e549dbcccfbd11e255f6037e1e640efaca0e19966ac77a592fdf06d295952a4"; string key = "7e4670ae70c98d24f3662c172dc510a085578b9ccc717e6c2f4e547edd960a34"; EthECKey privateKey = new EthECKey(key); byte[] privateKeyBytes = privateKey.GetPrivateKeyAsBytes(); Console.WriteLine("Private key (64 hex digits):\r\n" + privateKeyBytes.ToHex()); byte[] publicKeyBytes = privateKey.GetPubKeyNoPrefix(); Console.WriteLine("Public key uncompressed (2 * 64 hex digits):\r\n" + publicKeyBytes.ToHex()); ECPublicKeyParameters publicKeyParams = new ECKey(privateKeyBytes, true).GetPublicKeyParameters(); string publicKeyCompressed = HashUtils.ToHexCompressed(publicKeyParams.Q); Console.WriteLine("Public key compressed (65 hex digits):\r\n" + publicKeyCompressed); byte[] publicAddress = HashUtils.ComputeRIPEMD160(Utils.GetBytes(publicKeyCompressed)); Console.WriteLine("Public address (40 hex digits):\r\n" + publicAddress.ToHex()); }
public static string GetPublicKeyString(EthECKey privateKey) { return(privateKey.GetPubKeyNoPrefix().ToHex()); }