src/PSBitcoinCore/PrivateKeyTools.cs

using NBitcoin;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
 
namespace PSBitcoinClientCore
{
    static internal class PrivateKeyTools
    {
        internal static string GetPrivateDecimalKey(Key privateKey)
        {
            FieldInfo[] fields = typeof(Key).GetFields(BindingFlags.NonPublic | BindingFlags.Instance);
            var eckeyfield = fields.Single(x => x.Name == "_ECKey");
            var eckey = eckeyfield.GetValue(privateKey);
            var privateKeyInternal = eckey.GetType().GetProperty("PrivateKey").GetValue(eckey);
            var privateKeyDecimal = privateKeyInternal.GetType().GetProperty("D").GetValue(privateKeyInternal);
            var resut = privateKeyDecimal.ToString();
            return resut;
        }
 
        internal static string GetPrivateBinaryKey(Key privateKey)
        {
            string decimalKey = GetPrivateDecimalKey(privateKey);
            int[] values = decimalKey.ToCharArray().Select(x => int.Parse(x.ToString())).ToArray();
            var r = LargeNumberOperations.ConvertDecimalCharArrayToBinaryCharArray(values);
            return String.Join("", r);
        }
    }
}