从 Guid C# 生成比特币 public/private 密钥
Generate Bitcoin public/private key from Guid C#
我有一个随机生成的 128 位 GUID(加密安全)。我如何使用它作为种子来使用 C# 为比特币生成 public 和私钥?通过种子,我的意思是每次我使用相同的 guid 作为输入时,它应该产生相同的 public/private 键。
我看过 NBitcoin,但不明白如何实现它。
您可以直接创建32个随机字节作为您的私钥。下面的例子。但这非常重要:这 32 个字节必须来自加密安全的伪随机生成器。例如,如果您使用 C# 内置的 Random class,任何人都可以使用普通计算机恢复您的私钥。如果你打算在真正的比特币网络中使用它,你需要非常小心。我不确定 Guid 生成是否加密安全。
static void Main(string[] args)
{
byte[] GetRawKey()
{
// private key=1 in this example
byte[] data = new byte[32];
data[^1] = 1;
return data;
}
var key = new Key(GetRawKey()); // private key
var pair = key.CreateKeyPair(); // key pair (pub+priv keys)
var addrP2pkh = key.GetAddress(ScriptPubKeyType.Legacy, Network.Main); // P2PKH address
var addrP2sh = key.GetAddress(ScriptPubKeyType.SegwitP2SH, Network.Main); // Segwit P2SH address
Console.WriteLine(addrP2pkh.ToString());
Console.WriteLine(addrP2sh.ToString());
}
我有一个随机生成的 128 位 GUID(加密安全)。我如何使用它作为种子来使用 C# 为比特币生成 public 和私钥?通过种子,我的意思是每次我使用相同的 guid 作为输入时,它应该产生相同的 public/private 键。
我看过 NBitcoin,但不明白如何实现它。
您可以直接创建32个随机字节作为您的私钥。下面的例子。但这非常重要:这 32 个字节必须来自加密安全的伪随机生成器。例如,如果您使用 C# 内置的 Random class,任何人都可以使用普通计算机恢复您的私钥。如果你打算在真正的比特币网络中使用它,你需要非常小心。我不确定 Guid 生成是否加密安全。
static void Main(string[] args)
{
byte[] GetRawKey()
{
// private key=1 in this example
byte[] data = new byte[32];
data[^1] = 1;
return data;
}
var key = new Key(GetRawKey()); // private key
var pair = key.CreateKeyPair(); // key pair (pub+priv keys)
var addrP2pkh = key.GetAddress(ScriptPubKeyType.Legacy, Network.Main); // P2PKH address
var addrP2sh = key.GetAddress(ScriptPubKeyType.SegwitP2SH, Network.Main); // Segwit P2SH address
Console.WriteLine(addrP2pkh.ToString());
Console.WriteLine(addrP2sh.ToString());
}