예제 #1
0
        //public void GenarateKeyPair()
        //{
        //    var curve = ECNamedCurveTable.GetByName("secp256r1");
        //    var domainParams = new ECDomainParameters(curve.Curve, curve.G, curve.N, curve.H, curve.GetSeed());
        //    var secureRandom = new SecureRandom();
        //    var keyParams = new ECKeyGenerationParameters(domainParams, secureRandom);
        //    var generator = new ECKeyPairGenerator("ECDSA");
        //    generator.Init(keyParams);
        //    var keyPair = generator.GenerateKeyPair();
        //    PrivateKey = keyPair.Private as ECPrivateKeyParameters;
        //    PublicKey = keyPair.Public as ECPublicKeyParameters;
        //}

        public static string GeneratePrivateKey()
        {
            var privateKey = new byte[32];
            var rnd        = System.Security.Cryptography.RandomNumberGenerator.Create();

            rnd.GetBytes(privateKey);
            //return Base58Encoding.Encode(privateKey);
            //return Base58Encoding.EncodeWithCheckSum(privateKey);
            return(Base58Encoding.EncodePrivateKey(privateKey));
        }
예제 #2
0
        public static (string privateKey, string AccountId) GenerateWallet()
        {
            byte[] privateKey = new byte[32];
            using (RandomNumberGenerator rng = RandomNumberGenerator.Create())
            {
                rng.GetBytes(privateKey);
            }
            var kp = new KeyPair(privateKey);

            var pvtKeyStr = Base58Encoding.EncodePrivateKey(privateKey);

            var pubKey = kp.PublicKey.EncodePoint(false).Skip(1).ToArray();

            return(pvtKeyStr, Base58Encoding.EncodeAccountId(pubKey));
        }