コード例 #1
0
        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);
        }
コード例 #2
0
        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());
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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());
        }
コード例 #5
0
ファイル: Program.cs プロジェクト: nsaccon/PromiseBlockChain
 public static string GetPublicKeyString(EthECKey privateKey)
 {
     return(privateKey.GetPubKeyNoPrefix().ToHex());
 }