You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C#中使用128位GUID作为种子生成Bitcoin公私钥

C# 基于GUID和NBitcoin生成固定比特币公私钥对的实现方法

128位密码学安全GUID的熵满足比特币私钥的最低安全要求,但不能直接作为私钥使用:比特币私钥要求是256位且落在secp256k1曲线的有效取值范围内,我们可以通过固定的哈希映射实现同一GUID永远生成相同的公私钥对。

前置依赖

通过NuGet安装最新稳定版的NBitcoin库即可。

核心实现代码

using NBitcoin;
using System;
using System.Security.Cryptography;

public static class BitcoinKeyGenerator
{
    // 相同GUID输入永远返回相同的公私钥对
    public static (Key PrivateKey, PubKey PublicKey, string Address) GenerateFromGuid(Guid secureGuid, Network network = null)
    {
        network ??= Network.Main; // 默认主网,可指定为Network.TestNet使用测试网
        
        // 1. 将GUID转为字节数组,固定字节序规则,避免不同系统环境下字节序差异导致输出不一致
        byte[] guidBytes = secureGuid.ToByteArray();
        // 如需统一使用大端序,可放开下方注释,规则固定后不要修改
        // Array.Reverse(guidBytes); 

        // 2. 对GUID字节做SHA256哈希,得到256位符合私钥长度要求的熵,保证输入相同则输出完全一致
        byte[] hashBytes = SHA256.HashData(guidBytes);

        // 3. 生成私钥,NBitcoin会自动校验私钥是否在secp256k1的有效范围内
        Key privateKey = new Key(hashBytes);

        // 4. 导出公钥和对应地址
        PubKey publicKey = privateKey.PubKey;
        // 默认生成Segwit格式地址,可修改ScriptPubKeyType切换地址格式
        string address = publicKey.GetAddress(ScriptPubKeyType.Segwit, network).ToString();

        return (privateKey, publicKey, address);
    }

    // 调用示例
    public static void Main()
    {
        // 替换为你的密码学安全生成的128位GUID
        Guid mySecureGuid = Guid.Parse("xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx");
        var keys = GenerateFromGuid(mySecureGuid);

        // 输出WIF格式私钥(可直接导入主流比特币钱包使用)
        Console.WriteLine($"私钥(WIF格式):{keys.PrivateKey.GetWif(Network.Main)}");
        Console.WriteLine($"公钥:{keys.PublicKey}");
        Console.WriteLine($"Segwit地址:{keys.Address}");
    }
}

注意事项

  • 必须使用密码学安全方式生成的GUID作为输入,C#默认的Guid.NewGuid()不保证密码学安全性,若用于存储资产不要使用普通随机GUID。
  • GUID转字节数组的字节序规则固定后不要修改,否则同一GUID会生成不同的密钥对。
  • 生成的私钥可通过GetWif()方法导出WIF格式,可直接导入主流比特币钱包使用,私钥信息注意保密不要泄露。
  • 若需要生成Legacy、Nested Segwit等其他格式的比特币地址,修改ScriptPubKeyType参数即可,对应可选值为ScriptPubKeyType.Legacy、ScriptPubKeyType.SegwitP2SH。

内容的提问来源于stack exchange,提问作者Björn Morén

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 02:54:02